python第六十六天


---恢復內容開始---

1.在新版本中,添加app是直接在settings設置中,將INSTALLED_APPS里添加app名字,

但是他的完整寫法是   'app01.apps.App01Config'  因為新版本做了優化,所以直接寫app名字也支持

 

 

2.form標簽傳輸文件

form表單默認的編碼格式是urlencoded不支持發文件(只能把文件名發過去)
它所對應數據格式 username=jason&password=123

1.指定form提交的編碼格式。 在form標簽內添加  enctype="multipart/form-data" 才能實現使用form標簽傳輸文件的操作

2.在input標簽中將type設為 file 會出現選擇文件欄

使用post請求提交給后台后,后台使用request.FILES.get()來獲取文件,會獲取文件對象,對象可以使用 . name 方法來獲取文件名

 

3. ajax提交文件

在bootstrap 中的boot jQuery中導入jQuery。放置在<head>中

1. input標簽type設為file 。會出現選擇文件欄

2.設置一個button按鈕

2. 使用ajax設置點擊事件,然后使用FormData()生成一個內置對象 

此對象既可以傳普通的數據(鍵值對的數據)也可以傳輸文件

 

普通數據:

使用變量forData.append('name' , 'owen'); 添加普通數據

傳文件:

1.先獲取文件對象  $('#d2‘)[0].files[0],  先獲取標簽對象,取索引轉成原生js對象,,再使用內置方法files獲得文件對象

2.再使用formData.append('myfile' , 文件對象) 鍵值對的方式添加到formData中,

再將formData通過ajax發送給后台,后台使用request.FILES.get()獲取文件,使用request.POST.get()來獲取普通數據

 

forms組件:

關於django中測試腳本書寫

新建一個py文件,將manage.py中的以下代碼復制到py文件中

 

import os
import sys

if __name__ == "__main__":
os.environ.setdefault("DJANGO_SETTINGS_MODULE", "djtest.settings")

      再添加如下代碼

    imput django

    django.setup()

    再導入 app中的modles

    from app01 imput modelsz

還有一種方法是再pycharm解釋器下方有一個python Console,該環境下幫你做好了以上的操作

 

 

 

forms組件中所有字段默認都是必填的, 參數少傳會給必須有 該位置必須要傳參數的提示

在數據都滿足form組件校驗規則下,參數多傳,或者傳入沒有的字段會過濾掉不接收

 

補充:

 

render 中的  locals() ,會將所在的名稱空間所有的名字都傳遞給模板頁面

forms組件渲染標簽:

  forms組件只能幫你渲染 獲取用戶輸入(輸入框,選擇框,下拉框。。)的標簽

  forms組件取消前端校驗功能 在form標簽中添加 novalidata

 

forms組件后台校驗數據

  直接使用

form_obj = MyForm() # 實例化字段的類

if request.method == 'POST': # 判斷他是否是post請求

form_obj = MyForm(request.POST) # 直接將類傳入request.POST字典,因為request.post本身就是一個字典,而forms組件所需要的參數就是字典。所以直接將前台傳過來的數據傳進去判斷。得到的結果與is_valid()一樣,得到的是bool值,直接進行判斷

 

form組件當前端輸入的信息不合法的時候,頁面上的數據保留不會刷新,這樣方便用戶修改

 

 

 

 

 

 

forms組件的常用參數:

username= forms.CharField(max_length=6, label='用戶名', error_messages={'max_length' : ‘用戶名最長6位置’,

                                    'required' : '用戶名不能為空' })

1. max_length     : 設置最大長度

2. label='用戶名’       :自定義字段名,因為默認的是創建的字段名,是英文,可以自定義為中文

3. initial='請輸入用戶名' : 設置input框中的默認值

4. # 普通字段錯誤信息設置  error_messages={ ‘max_length’ : '用戶名最大只能是6位,‘required’ : ‘用戶名不能為空’ }    :錯誤信息  參數是一個字典. key必須寫對。value可以隨便設置

5. # 郵箱字段錯誤信息設置  error_messages={‘invalid’ : '郵箱格式不正確' , 'required' :  '郵箱不能為空'}           : 錯誤信息   

6. widget=widgets.PasswordInput( attrs={‘class’ : 'form-control'})  : 設置密碼為密文

 

forms字段校驗的兩種方式

1. RegexValidator驗證器

2.鈎子函數

鈎子函數是寫在字段類下面的函數,用來校驗客戶端傳過來的信息

1.局部鈎子。針對字段名來做校驗的函數  (函數命名開頭都是clean)

比如 def clean_username(self):  加判斷

    username = clenaed_data.get('username')

    

 


注意!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系我们删除。



 
粤ICP备14056181号  © 2014-2020 ITdaan.com