




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、表單課程介紹u 什么是表單u 為什么要學習表單u 怎樣才能學好表單什么是表單什么是表單u 思考:實戰項目中有哪些表單按名稱搜索商品用戶登錄/用戶修改管理(商品分類等)新增/修改地址為什么要學習表單u 重要u 離不開它u 所以要學怎樣學好表單u 掌握HTML各表單元素的使用u 掌握前后端驗證表單的方法u 掌握從后端獲取表單傳遞的數據u 掌握在django中使用表單u 實戰演練夯實基礎章節概要u 表單相關介紹u 文件上傳u Django中的表單u 模型表單u 根據模型定義表單u 實戰:表單的使用u 表單的驗證常見的表單元素u 表單<form>u 隱藏表單域u 單行文本框/多行文本框u
2、表單按鈕u 選擇(單選、多選、下拉選擇)u 文件上傳框<form>u action表單提交的URL地址u method表單請求的方式(GET/POST)u enctype請求內容的形式application/x-www-form-urlencodedmultipart/form-data文本u textarea多行文本u 單行文本(type的不同值)text單行文本password郵箱urlURLnumber數字color顏色日期時間等(date, month, week, time, datetime, datetime-local)選擇u 單選<input type=&q
3、uot;radio">u 多選<input type="checkbox">u 下拉選擇<select><option></option></select>其他u 文件上傳<input type=“file">u 隱藏表單域<input type=“hidden">u 按鈕<input type=“button"><button></button>在視圖中獲取表單值u GET請求request.GET.get(
4、name, None)u POST請求request.POST.get(name, None)u 思考:HTML表單在django中如何快速使用?Django中的表單u 創建第一個表單u 字段類型u 自定義表單界面創建第一個表單u 第一步:創建表單類u 第二步:添加到視圖u 第三步:渲染到模板u 第四步:在視圖中處理表單數據創建第一個表單u 第一步:創建表單類創建第一個表單u 第二步:添加到視圖創建第一個表單u 第三步:渲染到模板創建第一個表單u 第四步:在視圖中處理表單數據Form對象的屬性和方法u is_bound是否已經綁定數據u is_valid()表單是否已經通過驗證u cleane
5、d_data表單驗證后的數據u as_p()/as_ul()/as_table()渲染表單Form對象的屬性和方法u errors表單驗證后的錯誤信息u fields表單中的字段u initial初始化數據表單字段u 表單字段繼承自django.forms.Fieldu 每個字段都具有參數u 每個字段都可以有自定義的驗證邏輯u 每個字段都有鉤子函數,方便擴充功能字段的常用參數u required是否為必填,默認為必填u labellabel(如:輸入框前的文字描述)u initial初始化數據u widget定制界面顯示方式(如:文本框、選擇框)u help_text幫助文字字段的常用參數u
6、error_messages覆蓋字段異常后的錯誤顯示u localize本地化,根據用戶所在地區格式進行顯示u disabled禁用表單,界面上不可操作u has_changed()值是否發生了改變Django內置的字段u 文本/字符串u CharField字符串輸入Field郵件地址輸入uu URLFieldURL地址輸入u UUIDFielduuid字符串輸入Django內置的字段u 數值(整數,小數)u FloatField浮點數輸入u IntegerField整數輸入u DecimalField小數輸入(更精確)Django內置的字段u 選擇u ChoiceField單選u Multi
7、pleChoiceField多選u TypedChoiceField高級選擇(支持結果轉換類型)Django內置的字段u 日期/時間u DateField日期選擇u DateTimeField日期時間選擇u DurationField時間片段timedeltau TimeField時間選擇Django內置的字段u 文件/文件上傳u FileField文件u FilePathField文件路徑u ImageField圖片Django內置的字段u 布爾u BooleanFieldTrueFalseu NullBooleanFieldNoneTrueFalseu 正則u RegexField正則輸入
8、自定義界面顯示u 思考:如果我要使用多行文本輸入怎么辦?自定義界面顯示u 結果參考class CommentForm(forms.Form):""" 評論表單 """content = forms.CharField(label='內容', widget=forms.Textarea)內置的widgetsu 文本輸入u TextInputu NumberInputu HiddenInputu DateInputu DateTimeInputu TimeInputu TextareaInputuu URLInputu P
9、asswordInput內置的widgetsu 選擇輸入u Selectu SelectMultipleu NullBooleanSelectu CheckboxSelectMultipleu RadioSelect內置的widgetsu 文件上傳u FileInputu 復合Widgetu MultipleHiddenInputu SplitDateTimeWidget、 SplitHiddenDateTimeWidgetu SelectDateWidget根據模型定義表單/登錄表單u 實現表單的驗證u 思考:為什么要對表單進行驗證?u 場景思考:用戶登錄u 表單驗證的兩種方式u 單個字段驗
10、證u 多個字段綜合驗證單個字段驗證u 舉例:驗證用戶名為號碼u 第一步:定義clean_xx驗證方法u 第二步:獲取對應的字段值并驗證u 第三步:驗證失敗觸發forms.ValidationError異常u 第四步:返回驗證后的數據u 第五步:在html頁面顯示錯誤單個字段驗證u 舉例:驗證用戶名為號碼多個字段綜合驗證u 舉例:驗證用戶名和是否正確u 第一步:重寫clean()方法u 第二步:獲取用戶名和數據并驗證u 第三步:驗證失敗觸發forms.ValidationError異常u 第四步:返回驗證后的表單數據cleaned_datau 第五步:在html頁面顯示錯誤non_field_e
11、rrors模型表單u 思考:是否可以根據Django模型直接生成表單?ORM字段表單字段ForeignKey?ManyToManyField?TextField?PositiveIntegerField?ORM字段表單字段CharFieldCharFieldDateFieldDateFieldImageFieldImageFieldIntegerFieldIntegerFieldFloatFieldFloatFieldBooleanFieldBooleanField模型表單u 思考:是否可以根據Django模型直接生成表單?u 查看>ORM字段表單字段ForeignKeyMChoiceF
12、ieldManyToManyFieldMMultipleChoiceFieldTextFieldCharFieldPositiveIntegerFieldIntegerField模型表單u 示例:從模型創建用戶修改模型表單u 思考:重寫required錯誤信息怎么辦?u 思考:如何給模型表單添加新的css類?修改模型表單Meta配置選項u widgets修改展現樣式(文本輸入、數字輸入)u help_texts設置幫助文字u labels設置表單輸入前的文字提示u error_messages設置表單的錯誤提示文件上傳u 表單設置enctype="multipart/form-dat
13、a"u 在視圖中通過request.FILES來獲取文件對象u 將文件保存到磁盤結合ORM模型上傳u 表單設置enctype="multipart/form-data"u 在模型中使用ms.ImageFieldu 在表單中使用forms.ImageField實戰:表單的使用u 實現功能u 結合Django登錄實現用戶登錄u 通過自定義表單,添加收貨地址u 實現商品搜索功能u 實現加入購物車、支付u 實現訂單列表,查看物流等用戶、登錄及權限驗證u 自帶用戶認證u 安裝及配置u 用戶模型u 登錄及u 權限驗證u 對用戶進行擴展系統用戶認證系統u 用戶:用戶的登錄賬號等
14、信息u 權限:用戶是否限某一(執行操作)u 組:對多個用戶進行權限管理u 登錄:加密后的u 自帶管理安裝及配置第一步:INSTALLED_APPS安裝應用u 'django.contrib.auth'u 'django.contrib.contenttypes'第二步:MIDDLEWARE中間配置u SessionMiddlewareu AuthenticationMiddleware第三步:migrate同步模型到數據庫用戶模型u Useru AnonymousUser張三游客用戶模型u 常用屬性張三屬性描述username用戶名password登錄電子郵箱i
15、s_staff是否為內部員工is_active是否為激活用戶is_superuser是否為超級管理員用戶模型u 常用屬性張三屬性描述is_authenticated用戶是否已登錄的只讀屬性is_anonymous用戶登錄是否已失效的只讀屬性last_login最后登錄的時間date_joined時間groups用戶組多對多關系user_permissions用戶權限多對多關系用戶登錄步驟一:認證用戶user = authenticate(username='john',password='secret')步驟二:認證后的用戶是否為Noneu 用戶不為None則表
16、示用戶認證通過步驟三:調用login函數登錄用戶u login(request, user, backend=None)用戶管理u 在視圖中獲取當前用戶request.useru 需要登錄才可的視圖login_requireddef my_view(request):用戶管理u 創建普通用戶user = User.objects.create_user('john',test', 'johnpassword')u 使用命令行創建超級管理員>>> python manage.py createsuperuser用戶u 使用logout函數
17、當前登錄的用戶from django.contrib.auth import logout def logout_view(request):logout(request)# 執行后面的操作權限管理用戶是否具備某權限urequest.user.has_perm('foo.add_bar')u 強制權限驗證permission_required('polls.can_vote')def my_view(request):pass管理u 設置、修改用戶的>>> from django.contrib.auth.ms import User>&
18、gt;> u = User.objects.get(username='john')>>> u.set_password('new password')>>> u.save()u 檢查用戶的是否正確>>> u = User.objects.get(username='john')>>> u. check_password(my password')u 多種加密方式可供選擇對用戶進行擴展u 思考:Django內置的用戶模型滿足不了需求怎么辦?u 思考:要用戶模型添加賬戶怎么辦?對用戶進行擴展兩種方式解決用戶問題u 方式1:使用OneToOneField對用戶進行擴展u 方式2:替換現有的用戶模型替換現有的用戶模型u 步驟一:配置用戶模型,告訴django框架AUTH_USER_M= 'o
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025租房合同協議樣本參考
- 2025租賃合同撤銷協議書
- 2025股票交易委托合同范本模板
- 2025微博平臺委托開發合同
- 2025中學新風系統安裝施工合同書
- 2025租房合同簡化版
- 2025租房合同簡化版樣本
- 2025標準化的煤炭購銷合同范本
- 2025年知識產權合同糾紛的解決方法
- 《養殖用藥及安全》課件
- 2022-2023學年廣東省深圳市南山區六年級上學期期末英語試卷
- 中華傳統文化進中小學課程教材指南
- 汽車發動機火花塞市場洞察報告
- 學校安保服務投標方案(技術方案)
- 故宮的課件教學課件
- 幼兒園大班安全活動《安全乘坐電梯》課件
- 結構化面試的試題及答案
- 涂料投標書完整版本
- 小學閱讀社團活動總結
- 2024-2025學年小學勞動四年級上冊人民版《勞動》(2022)教學設計合集
- GB/T 22069-2024燃氣發動機驅動空調(熱泵)機組
評論
0/150
提交評論