先導入:
from django.forms importform
from django.forms import
fields
from django.forms import widgets
from django.core.validators import regexvalidator在建立類,繼承form(定義input框的驗證規則)from django.core.exceptions import validationerror
class在例項化建立物件,將物件返回給render函式進行渲染loginform(form):
username=fields.charfield(error_messages=,
widget=widgets.textinput(attrs=))
password=fields.charfield(error_messages=,
widget=widgets.passwordinput(attrs=))
defclean_username(self):
#...
user = self.cleaned_data['
username']
is_exsit = models.userinfo.objects.filter(username=user).count()
ifnot
is_exsit:
raise validationerror('
使用者名稱不存在')
return user
if request.method=="模板渲染get"
: form=loginform()
return render(request,"
login.html
",)
使用者名稱:}}使用者輸入資訊提交後進行驗證密碼:}}
form=loginform(data=request.post)ifform.is_valid(): #是否驗證成功
user=models.userinfo.objects.filter(**form.cleaned_data).first() #通過驗證則進行資料庫比對
ifuser:
request.session[settings.wxp]=
return redirect("
/index/")
form.add_error(
'password
', validationerror('
使用者名稱或密碼錯誤'))
return render(request,"
login.html
",)
else
:
return render(request,"
login.html
",) #沒通過驗證則返回錯誤資訊
重寫__init__方法(推薦使用)方法一class
classform(form):
caption = fields.charfield(error_messages=)
headmaster_id = fields.choicefield(choices=)
def__init__(self,*args,**kwargs):
super().
__init__(*args,**kwargs)
self.fields[
'headmaster_id
'].choices = models.userinfo.objects.filter(ut_id=2).values_list('
id','
username
')
#方法二使用modelchoicefield建立字段
from django.forms.models import
modelchoicefield
class
classform(form):
caption = fields.charfield(error_messages=)
headmaster_id = modelchoicefield(queryset=models.userinfo.objects.filter(ut_id=2))
Django框架全面講解 Form
django中的form一般有兩種功能 輸入html 驗證使用者輸入 usr bin env python3 coding utf 8 import re from django import forms from django.core.exceptions import validationer...
Django框架全面講解 Form
django中的form一般有兩種功能 輸入html 驗證使用者輸入 usr bin env python3 coding utf 8 import re from django import forms from django.core.exceptions import validationer...
django中form的使用
所有的form類都是django.forms.form的子類。from django import forms class nameform forms.form your name forms.charfield label your name max length 100 在html頁面中使用 ...