在 Django 的表单中使用 CSS 进行样式设计,可以使表单更美观,便于用户操作。下面是一个完整的攻略:
步骤一:将 Django 表单类绑定到 HTML 表单上
让我们考虑一个简单的表单,它包含一个文本输入框和一个提交按钮。
# forms.py
from django import forms
class MyForm(forms.Form):
name = forms.CharField(max_length=100)
# views.py
from django.shortcuts import render
from .forms import MyForm
def my_view(request):
if request.method == 'POST':
form = MyForm(request.POST)
if form.is_valid():
name = form.cleaned_data['name']
# do something with name
else:
form = MyForm()
return render(request, 'my_template.html', {'form': form})
在模板中,使用 {{ form.as_p }}
显示表单。
<!-- my_template.html -->
<form method="post">
{% csrf_token %}
{{ form.as_p }}
<button type="submit">Submit</button>
</form>
步骤二:为 Django 表单添加 CSS 样式
现在,可以通过两种方法将 CSS 样式应用到 Django 表单上。
方法一:手动添加类名
在表单定义中,为字段添加 widget=forms.TextInput(attrs={'class': 'my-class'})
,然后在 CSS 文件中定义 my-class
样式。例如:
# forms.py
class MyForm(forms.Form):
name = forms.CharField(max_length=100, widget=forms.TextInput(attrs={'class': 'my-class'}))
.my-class {
color: red;
}
应用类名的另一种方法是在模板中添加 class
参数。例如:
<!-- my_template.html -->
<form method="post">
{% csrf_token %}
<div class="my-class">
{{ form.name.label_tag }} {{ form.name }}
</div>
</form>
.my-class {
color: red;
}
方法二:用 Django-Crispy-Forms 库自动生成 HTML 和 CSS
Django-Crispy-Forms 是一个第三方库,它提供了一些额外的功能,使 HTML 表单更易于打造和美化。安装该库:pip install django-crispy-forms
。
然后在项目的 INSTALLED_APPS
中添加 crispy_forms
。
# settings.py
INSTALLED_APPS = [
# ...
'crispy_forms',
]
在表单中添加 crispy_forms.helper.FormHelper
和 crispy_forms.layout.Submit
:
# forms.py
from crispy_forms.helper import FormHelper
from crispy_forms.layout import Submit
class MyForm(forms.Form):
name = forms.CharField(max_length=100)
def __init__(self, *args, **kwargs):
super().__init__(*args, **kwargs)
self.helper = FormHelper()
self.helper.add_input(Submit('submit', 'Submit'))
# views.py
from django.shortcuts import render
from .forms import MyForm
def my_view(request):
if request.method == 'POST':
form = MyForm(request.POST)
if form.is_valid():
name = form.cleaned_data['name']
# do something with name
else:
form = MyForm()
return render(request, 'my_template.html', {'form': form})
在模板中使用 {% crispy form %}
代替 {{ form.as_p }}
。
<!-- my_template.html -->
{% load crispy_forms_tags %}
<form method="post">
{% csrf_token %}
{% crispy form %}
</form>
这将自动为表单生成 HTML 和 CSS 样式。
以上就是在 Django 表单中使用 CSS 进行样式设计的完整攻略。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:在Django的form中使用CSS进行设计的方法 - Python技术站