在本文中,我们将带你了解Django表单中的CSS样式在这篇文章中,我们将为您详细介绍Django表单中的CSS样式的方方面面,并解答django新写的css样式不显示常见的疑惑,同时我们还将给您一些
在本文中,我们将带你了解Django 表单中的 CSS 样式在这篇文章中,我们将为您详细介绍Django 表单中的 CSS 样式的方方面面,并解答django新写的css样式不显示常见的疑惑,同时我们还将给您一些技巧,以帮助您实现更有效的css – Django样式登录表单并添加额外的跨度、Django CMS CSS样式、django css样式,图片路径问题解决方案、django – 从表单中动态删除选项。
本文目录一览:- Django 表单中的 CSS 样式(django新写的css样式不显示)
- css – Django样式登录表单并添加额外的跨度
- Django CMS CSS样式
- django css样式,图片路径问题解决方案
- django – 从表单中动态删除选项
Django 表单中的 CSS 样式(django新写的css样式不显示)
我想设置以下样式:
表格.py:
from django import formsclass ContactForm(forms.Form): subject = forms.CharField(max_length=100) email = forms.EmailField(required=False) message = forms.CharField(widget=forms.Textarea)
contact_form.html:
<form action="" method="post"> <table> {{ form.as_table }} </table> <input type="submit" value="Submit"></form>
例如,如何设置 , 的类 或 ID 以 提供外部样式表?subject``email``message
答案1
小编典典取自我对以下内容的回答: 如何在 Django 中使用
class MyForm(forms.Form): myfield = forms.CharField(widget=forms.TextInput(attrs={''class'': ''myfieldclass''}))
或者
class MyForm(forms.ModelForm): class Meta: model = MyModel def __init__(self, *args, **kwargs): super(MyForm, self).__init__(*args, **kwargs) self.fields[''myfield''].widget.attrs.update({''class'': ''myfieldclass''})
或者
class MyForm(forms.ModelForm): class Meta: model = MyModel widgets = { ''myfield'': forms.TextInput(attrs={''class'': ''myfieldclass''}), }
-– 编辑 —
以上是对完成所问内容的原始问题代码进行的最简单更改。如果您在其他地方重复使用该表单,它还可以防止您重复自己;如果您使用 Django 的
as_table/as_ul/as_p
表单方法,您的类或其他属性就可以工作。如果您需要完全控制完全自定义的渲染,这已清楚地记录在案
-- 编辑 2 —
添加了一种更新的方法来为 ModelForm 指定小部件和属性。
css – Django样式登录表单并添加额外的跨度
>对于我的登录,我使用Django的默认身份验证功能,并且没有手动编写任何视图或表单.
urls.py
urlpatterns += patterns( 'django.contrib.auth.views',url(r'^login/$','login',{'template_name':'login.html'},name='qna_login'),url(r'^logout/$','logout',{'next_page':'qna_home'},name='qna_logout'),)
的login.html
{% extends "base.html" %} {% block content%} {% if form.errors %} <p> Your username and/or password didn't match </p> {% endif%} <form role="form"method="post" action="{% url 'django.contrib.auth.views.login' %}"> <div> {% csrf_token %} {{ form }} <input type="submit"value="login" /> <input type="hidden" name="next" value="{{ next }}" /> </div> </form> {% endblock %}
如何为其添加引导程序样式?
>对于新用户注册,我添加了一些引导程序特定样式,但需要添加额外的跨度并用Glyphicons替换标签.
forms.py
class UserForm(forms.ModelForm): password = forms.CharField(widget=forms.Passwordinput()) class Meta: model = User fields = ('username','email','password') def __init__(self,*args,**kwargs): super(UserForm,self).__init__(*args,**kwargs) self.fields['username'].widget.attrs.update({'class':'form-control','placeholder':'Username'}) self.fields['email'].widget.attrs.update({'class':'form-control','placeholder':'Email'}) self.fields['password'].widget.attrs.update({'class':'form-control','placeholder':'Password'})
我需要做的是替换模板中生成的内容,例如
<p><label for="id_username">Username:</label> <inputid="id_username" maxlength="30" name="username" placeholder="Username" type="text" /> <span>required. 30 characters or fewer. Letters,numbers and @/./+/-/_ characters</span></p>
通过自定义bootstrap插件和glyphicon,如
<div> <span><span></span></span> <input type="text"placeholder="Username"> </div>
解决方法
<form role="form"method="post" action="{% url 'django.contrib.auth.views.login' %}">{% csrf_token %} <div> {% for field in form %} <div> <span><span></span></span> <inputid="{{ field.id_for_label }}" maxlength="30" name="{{ field.html_name }}" value="{{ field.value }}" type="text" /> {{ field.errors }} </div> {% endfor %} <input type="submit"value="login" /> <input type="hidden" name="next" value="{{ next }}" /> </div> </form>
像往常一样,Django documentation has everything.
Django CMS CSS样式
Django CMS没有CSS或任何其他标记的任何内联编辑功能。这是设计使然,而不像Wordpress。
要编辑CSS,您需要在项目中创建自己的CSS文件。
,如果您需要在页面中添加HTML或CSS片段,则有一个官方插件适用于?-https://github.com/django-cms/djangocms-snippet
正如@ Aiky30所说,按照django最佳做法,最好将全局CSS代码放在static
中。
django css样式,图片路径问题解决方案
在用Django 做项目时,如果在本地调试的情况下,我们会开启 settings.py 中的 DEBUG = True
同时我们还会做如下操作:
1. 设置 STATIC_ROOT = os.path.join(os.path.dirname(__file__),''static'')
2.设置 STATIC_URL = ''/static/''
以上两步我想一般都会提到,但即使你做了这样的配置,当你在浏览器中浏览你的CSS或JS 文件,仍然是 404 错误,说明路径错误,根本找不到。
比如我的工程如下:
你如果输入http://localhost:8000/static/js/myjs.js肯定出错。经过多次试验,按如下方法可以解决
配置STATICFILES_DIRS
比如我的工程配置如下:
STATICFILES_DIRS = (
(''css'',os.path.join(STATIC_ROOT,''css'').replace(''\\'',''/'') ),
(''js'',os.path.join(STATIC_ROOT,''js'').replace(''\\'',''/'') ),
(''images'',os.path.join(STATIC_ROOT,''images'').replace(''\\'',''/'') ),
(''upload'',os.path.join(STATIC_ROOT,''upload'').replace(''\\'',''/'') ),
)
注意前面的css,js,images,upload 一定要与你的目录结构名称保持一致。
配置好了你再次启动django ,然后访问:http://localhost:8000/static/js/myjs.js就看到结果了,说明找到路径,同样css,image图片都可以找到了.
早模板中的使用
<script type="text/javascript" src="/static/js/myjs.js"></script>
采用这种方式就可以了。css与图片同样的道理。
注意在上诉情况下,只能在开启 DEBUG=True 时才能生效,在我们开发的时候很方便。如果设置DEBUG=False 将不会生效。这种情况时,要采用生产环境的 配置。用web application server 来处理这些静态的图片,css,以及js文件。
生产环境的处理
1.设置 DEBUG=False
2.可以不用配置STATICFILES_DIRS
3.配置web application server ,比如我用 nginx:
location ^~ /static {
root /opt/www/MyNet;
}
这样,就自然找到static路径,不用 django去处理了。如果想配置生产环境的,可以参考我写的另一篇文章:生产环境上配置django
备注:我看到有的文章在urls.py 中进行配置,确实可以,但我觉得这不是个好方法。比如:
MEDIA_ROOT=os.path.join(os.path.dirname(__file__),''media'').replace(''\\'',''/'') #如果是*nix系统,不需要replace函数
MEDIA_URL=''/media/'' #末尾一定要加上/
ADMIN_MEDIA_PREFIX = ''/media/admin/'' #填啥都可以,就是不能跟MEDIA_URL一样
然后
(r''^media/(?P.*)$'', ''django.views.static.serve'', {''document_root'': settings.MEDIA_ROOT})
django – 从表单中动态删除选项
RANGE_CHOICES = ( ('last','Last Year'),('this','This Year'),('next','Next Year'),) class MonthlyTotalsForm(forms.Form): range = forms.ChoiceField(choices=RANGE_CHOICES,initial='this')
它在模板中显示如下:
{{ form.range }}
在某些情况下,我不想显示“下一年”选项.是否可以在创建表单的视图中删除此选项?
解决方法
class MonthlyTotalsForm(forms.Form): range = forms.ChoiceField(choices=RANGE_CHOICES,initial='this') def __init__(self,*args,**kwargs): no_next_year = kwargs.pop('no_next_year',False) super(MonthlyTotalsForm,self).__init__(*args,**kwargs) if no_next_year: self.fields['range'].choices = RANGE_CHOICES[:-1] #views.py MonthlyTotalsForm(request.POST,no_next_year=True)
今天关于Django 表单中的 CSS 样式和django新写的css样式不显示的介绍到此结束,谢谢您的阅读,有关css – Django样式登录表单并添加额外的跨度、Django CMS CSS样式、django css样式,图片路径问题解决方案、django – 从表单中动态删除选项等更多相关知识的信息可以在本站进行查询。
本文标签: