GVKun编程网logo

Django 表单中的 CSS 样式(django新写的css样式不显示)

19

在本文中,我们将带你了解Django表单中的CSS样式在这篇文章中,我们将为您详细介绍Django表单中的CSS样式的方方面面,并解答django新写的css样式不显示常见的疑惑,同时我们还将给您一些

在本文中,我们将带你了解Django 表单中的 CSS 样式在这篇文章中,我们将为您详细介绍Django 表单中的 CSS 样式的方方面面,并解答django新写的css样式不显示常见的疑惑,同时我们还将给您一些技巧,以帮助您实现更有效的css – Django样式登录表单并添加额外的跨度、Django CMS CSS样式、django css样式,图片路径问题解决方案、django – 从表单中动态删除选项

本文目录一览:

Django 表单中的 CSS 样式(django新写的css样式不显示)

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样式登录表单并添加额外的跨度

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>

解决方法

您可以单独渲染每个字段,而不是让Django使用{{form}}渲染整个表单.你可以写这样的模板 –
<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样式

Django CMS没有CSS或任何其他标记的任何内联编辑功能。这是设计使然,而不像Wordpress。

要编辑CSS,您需要在项目中创建自己的CSS文件。

,

如果您需要在页面中添加HTML或CSS片段,则有一个官方插件适用于?-https://github.com/django-cms/djangocms-snippet

正如@ Aiky30所说,按照django最佳做法,最好将全局CSS代码放在static中。

django css样式,图片路径问题解决方案

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 – 从表单中动态删除选项

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 – 从表单中动态删除选项等更多相关知识的信息可以在本站进行查询。

本文标签: