日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

13.2.8 组件

發布時間:2024/5/6 编程问答 54 豆豆
生活随笔 收集整理的這篇文章主要介紹了 13.2.8 组件 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

一、forms組件

校驗字段功能

針對一個實例:注冊用戶講解。

模型:models.py

class UserInfo(models.Model):name=models.CharField(max_length=32)pwd=models.CharField(max_length=32)email=models.EmailField()tel=models.CharField(max_length=32)

模板: register.html:

<!DOCTYPE html> <html lang="en"> <head><meta charset="UTF-8"><title>Title</title></head> <body><form action="" method="post">{% csrf_token %} <div><label for="user">用戶名</label><p><input type="text" name="name" id="name"></p></div><div><label for="pwd">密碼</label><p><input type="password" name="pwd" id="pwd"></p></div><div><label for="r_pwd">確認密碼</label><p><input type="password" name="r_pwd" id="r_pwd"></p></div><div><label for="email">郵箱</label><p><input type="text" name="email" id="email"></p></div><input type="submit"> </form></body> </html>

視圖函數:register

# forms組件 from django.forms import widgetswid_01=widgets.TextInput(attrs={"class":"form-control"}) wid_02=widgets.PasswordInput(attrs={"class":"form-control"})class UserForm(forms.Form):name=forms.CharField(max_length=32,widget=wid_01)pwd=forms.CharField(max_length=32,widget=wid_02)r_pwd=forms.CharField(max_length=32,widget=wid_02)email=forms.EmailField(widget=wid_01)tel=forms.CharField(max_length=32,widget=wid_01)def register(request):if request.method=="POST":form=UserForm(request.POST)if form.is_valid():print(form.cleaned_data) # 所有干凈的字段以及對應的值else:print(form.cleaned_data) #print(form.errors) # ErrorDict : {"校驗錯誤的字段":["錯誤信息",]}print(form.errors.get("name")) # ErrorList ["錯誤信息",]return HttpResponse("OK")form=UserForm()return render(request,"register.html",locals())

二、渲染標簽功能

1

<!DOCTYPE html> <html lang="en"> <head><meta charset="UTF-8"><title>Title</title><!-- 最新版本的 Bootstrap 核心 CSS 文件 --><link rel="stylesheet" href="https://cdn.bootcss.com/bootstrap/3.3.7/css/bootstrap.min.css" integrity="sha384-BVYiiSIFeK1dGmJRAkycuHAHRg32OmUcww7on3RYdg4Va+PmSTsz/K68vbdEjh4u" crossorigin="anonymous"> </head> <body> <h3>注冊頁面</h3> <div class="container"><div class="row"><div class="col-md-6 col-lg-offset-3"><form action="" method="post">{% csrf_token %}<div><label for="">用戶名</label>{{ form.name }}</div><div><label for="">密碼</label>{{ form.pwd }}</div><div><label for="">確認密碼</label>{{ form.r_pwd }}</div><div><label for=""> 郵箱</label>{{ form.email }}</div><input type="submit" class="btn btn-default pull-right"></form></div></div> </div> </body> </html>

2

<form action="" method="post">{% csrf_token %}{% for field in form %}<div><label for="">{{ field.label }}</label>{{ field }}</div>{% endfor %}<input type="submit" class="btn btn-default pull-right"> </form>

3

<form action="" method="post">{% csrf_token %}{{ form.as_p }}<input type="submit" class="btn btn-default pull-right"></form>

三、顯示錯誤與重置輸入信息功能

視圖

def register(request):if request.method=="POST":form=UserForm(request.POST)if form.is_valid():print(form.cleaned_data) # 所有干凈的字段以及對應的值else:print(form.cleaned_data) #print(form.errors) # ErrorDict : {"校驗錯誤的字段":["錯誤信息",]}print(form.errors.get("name")) # ErrorList ["錯誤信息",]return render(request,"register.html",locals())form=UserForm()return render(request,"register.html",locals())

模板

<form action="" method="post" novalidate>{% csrf_token %}{% for field in form %}<div><label for="">{{ field.label }}</label>{{ field }} <span class="pull-right" style="color: red">{{ field.errors.0 }}</span></div>{% endfor %}<input type="submit" class="btn btn-default"></form>

四、局部鉤子與全局鉤子

模板

# forms組件 from django.forms import widgetswid_01=widgets.TextInput(attrs={"class":"form-control"}) wid_02=widgets.PasswordInput(attrs={"class":"form-control"})from django.core.exceptions import ValidationErrorclass UserForm(forms.Form):name=forms.CharField(max_length=32,widget=wid_01)pwd=forms.CharField(max_length=32,widget=wid_02)r_pwd=forms.CharField(max_length=32,widget=wid_02)email=forms.EmailField(widget=wid_01)tel=forms.CharField(max_length=32,widget=wid_01)# 局部鉤子def clean_name(self):val=self.cleaned_data.get("name")if not val.isdigit():return valelse:raise ValidationError("用戶名不能是純數字!")# 全局鉤子def clean(self):pwd=self.cleaned_data.get("pwd")r_pwd=self.cleaned_data.get("r_pwd")if pwd==r_pwd:return self.cleaned_dataelse:raise ValidationError('兩次密碼不一致!')def register(request):if request.method=="POST":form=UserForm(request.POST)if form.is_valid():print(form.cleaned_data) # 所有干凈的字段以及對應的值else:clean_error=form.errors.get("__all__")return render(request,"register.html",locals())form=UserForm()return render(request,"register.html",locals())

視圖

<form action="" method="post" novalidate>{% csrf_token %}{% for field in form %}<div><label for="">{{ field.label }}</label>{{ field }}<span class="pull-right" style="color: red">{% if field.label == 'R pwd' %}<span>{{ clean_error.0 }}</span>{% endif %}{{ field.errors.0 }}</span></div>{% endfor %}<input type="submit" class="btn btn-default"> </form>

總結

以上是生活随笔為你收集整理的13.2.8 组件的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。