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

歡迎訪問 生活随笔!

生活随笔

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

编程问答

08.form组件

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

form組件

在需要使用用戶認證組件的app下創建my_form.py

# my_form.py from django.forms import widgets # 用于規定type from django import forms # forms組件 from blog.models import UserInfo # 引入表進行創建鉤子 from django.core.exceptions import ValidationError # 鉤子捕獲異常class UserForm(forms.Form):user = forms.CharField(max_length=32, label="用戶名", widget=widgets.TextInput(attrs={"class": "form-control"}),error_messages={"required": "該字段不能為空"})pwd = forms.CharField(max_length=32, label="密碼", widget=widgets.PasswordInput(attrs={"class": "form-control"}),error_messages={"required": "該字段不能為空"})re_pwd = forms.CharField(max_length=32, label="確認密碼", widget=widgets.PasswordInput(attrs={"class": "form-control"}),error_messages={"required": "該字段不能為空"})email = forms.EmailField(max_length=32, label="郵箱", widget=widgets.EmailInput(attrs={"class": "form-control"}),error_messages={"required": "該字段不能為空"})# 二次校驗def clean_user(self):user = self.cleaned_data.get("user")userinfo = UserInfo.objects.filter(username=user).first()if not userinfo:return userelse: # 已有人注冊過了raise ValidationError("該用戶已被注冊") # 一定要用raise ValidationError("xxxxx")def clean(self): # 全局鉤子,鍵__all__pwd = self.cleaned_data.get("pwd") # 所有干凈的字段以及對應的值的字典re_pwd = self.cleaned_data.get("re_pwd")# 有多個錯誤信息需要再多一個判斷if pwd and re_pwd: # 兩個都有值時if pwd.upper() == re_pwd.upper():return self.cleaned_dataelse:raise ValidationError("兩次密碼不一致")else:return self.cleaned_data# register.html {% for field in form %}<div class="form-group"><label for="{{ field.auto_id }}">{{ field.label }}</label>#.auto_id生成id_field,用于label對應input的id{{ field }} <span class="error pull-right"></span></div> {% endfor %}#views.register if form.is_valid(): # 如果有值response["user"] = form.cleaned_data.get("user")# 生成用戶信息user = form.cleaned_data.get("user")pwd = form.cleaned_data.get("pwd")email = form.cleaned_data.get("email")avatar_obj = request.FILES.get("avatar") # 拿頭像print(form.cleaned_data)# 代碼優化extra = {} # 擴展字段if avatar_obj: # 如果用戶傳了頭像extra["avatar"] = avatar_obj # 擴展字段賦值給字典 UserInfo.objects.create_user(username=user, password=pwd, email=email, **extra) # 傳字典**{}else: # 如果沒有值,則說明有錯誤form.errors拿到所有錯誤的字典print(form.cleaned_data)print(form.errors)response["msg"] = form.errors

?

轉載于:https://www.cnblogs.com/QQL-anatkh/p/9597630.html

總結

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

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