from django.contrib import admin
from django.urls import path
from app01 import views
urlpatterns = [
path('admin/', admin.site.urls),
path('test/',views.test) #测试form组件的路由
]
from django.shortcuts import render
from django import forms #使用form组件需要先导入forms
class UserInfo(forms.Form): #创建一个form类
username = forms.CharField( #定义输入框标签username
label='用户名' #定义label,默认为字段名(username)
)
password = forms.CharField(
label='密码',
widget=forms.widgets.PasswordInput(attrs={'class':'c1'}), #widget是forms的一个插件,让密码框密文显示
#attrs={'class': 'c1'} 可以控制标签的属性
)
sex = forms.ChoiceField( #定义选择框,默认生成单选下拉框
choices=((1,'男'),(2,'女')),
widget=forms.widgets.RadioSelect, #通过插件设置成radio单选,可以控制标签的属性
#widget=forms.widgets.Select, #和默认相同(下拉选择)
)
hobby = forms.MultipleChoiceField( #定义多选框,默认是下拉框多选
choices=((1,'喝酒'),(1,'抽烟'),(3,'烫头')),
widget=forms.CheckboxSelectMultiple #通过插件设置成checkbox多选框
)
remember_me = forms.ChoiceField( #定义记住密码选项
label='记住密码',
widget=forms.CheckboxInput #使用插件
)
bday = forms.DateField( #定义一个日期框,但是默认为type=text类型
label='出版日期',
widget=forms.DateInput(attrs={'type':'date'}) #设置成日期输入框
)
def test(request):
u_obj = UserInfo() #实例化一个form对象
return render(request,'test.html',{'u_obj': u_obj}) #将form对象渲染到前端模板
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>test</title>
<style>
.c1{
background-color: red;
}
</style>
</head>
<body>
<form action="" method="post">
{% csrf_token %}
<div>
{{ u_obj.username.label }}:{{ u_obj.username }} {# 通过 “.” 调用,生成标签 #}
</div>
<div>
{{ u_obj.password.label }}:{{ u_obj.password }}
</div>
<div>
{{ u_obj.sex }}
</div>
<div>
{{ u_obj.hobby }}
</div>
<div>
{{ u_obj.remember_me }}{{ u_obj.remember_me.label }}
</div>
<div>
{{ u_obj.bday }}{{ u_obj.bday.label }}
</div>
<div>
<input type="submit" value="提交">
</div>
</form>
</body>
</html>