day21 雷神 django第四天

2022-08-05 11:36:13 字數 4192 閱讀 6935

解決兩個事情:

不想重複提交,資料重置;

校驗規則

流程:

(1) 建立form元件對應的類,比如loginform

(2)

views.login:

if get請求:

form_obj=loginform()

return render(request,"login.html",) # 由form_obj渲染form表單的有效控制項

渲染方式三種:

123if post請求:

form_obj = loginfrom(request.post)

if form_obj.is_valid():

form_obj.cleaned_data # 所有的有效資料

label='使用者名稱',

max_length=16,

min_length=3,

error_messages=

)pwd = forms.charfield(

error_messages=,

widget=widgets.passwordinput(attrs={})

)repeat_pwd = forms.charfield(

error_messages=,

widget=widgets.passwordinput(attrs={})

)email = forms.emailfield()

phone = forms.charfield()

def clean_user(self):

val = self.cleaned_data.get('user') # 注意是cleaned_data

ret = userinfo.objects.filter(name=val)

if not ret:

return val # 通過,返回該值,不通過,返回錯誤資訊,validationerror()

else:

raise validationerror('該使用者已註冊')

def clean_phone(self):

val = self.cleaned_data.get('phone')

import re

ret = re.search("^1[3578]\d$", val)

if ret:

return val

else:

raise validationerror('手機號格式錯誤')

def clean(self): # clean是全域性鉤子

pwd = self.cleaned_data.get('pwd')

repeat_pwd = self.cleaned_data.get('repeat_pwd')

if pwd == repeat_pwd:

return self.cleaned_data

else:

raise validationerror('兩次密碼不一致')

def register(request):

if request.method == 'post':

reg_form = regform(request.post)

if reg_form.is_valid():

name = reg_form.cleaned_data.get('name')

pwd = reg_form.cleaned_data.get('pwd')

userinfo.objects.create(name=name, pwd=pwd)

return httpresponse('註冊成功!')

else:

all_err = reg_form.errors.get('__all__')

print(all_err)

return render(request, 'register.html', locals())

reg_form = regform()

return render(request, 'register.html', locals()) # 包含函式執行,到這locals的所有區域性變數。

templates

request.user 存的是當前使用者的物件,沒有登入的話是乙個匿名使用者物件。

1 使用auth_user表作為使用者表

2 登入:

user=auth.authenticate(username=user,password=pwd)

auth.login(request,user) # session寫操作

auth.logout(request) # request.session.flush()

驗證 user.is_authenticated() # 登入狀態時,返回true,否則返回false

建立使用者:user.objects.create_user(username="egon123",password="1234")

locals() 深拷貝 完全獨立,模板裡改變變數的值,函式裡的值不會改變。

ajax

1. 發請求的途徑

1. 在瀏覽器位址上輸入位址 回車 ——》 get

2. form表單 ——》 get / post

3. a標籤 ——》 get

2. ajax

使用js技術傳送非同步請求 一般傳輸json資料

特點:區域性重新整理 當前頁面不重新整理

非同步 1. 計算示例

$.ajax(,

success:function (res)

})2. ajax的引數介紹

上傳檔案

form_obj = new formdata();

# jquery物件轉換為dom物件,方法files,可能傳多個檔案,只要乙個,,這就包含了資料得form_data物件。

$.ajax(,

})2.

headers:,

3、 使用檔案

day21 學習總結

string s new string 建立乙個空的字串序列 string s new string hello 建立乙個內容為 hello 的字串 string s hello 建立乙個內容為 hello 的字串 string s new string char chars 通過字元陣列建立乙個字...

每日演算法 day 21

那些你早出晚歸付出的刻苦努力,你不想訓練,當你覺的太累了但還是要咬牙堅持的時候,那就是在追逐夢想,不要在意終點有什麼,要享受路途的過程,或許你不能成就夢想,但一定會有更偉大的事情隨之而來。mamba out 2020.3.4 記憶化搜尋 include include include include...

Day2 1 迴圈結構

課件位址 全部 課程目標 1.while 型迴圈 2.for.in 迴圈 3.range 函式4.break 和continue 語句及迴圈中的 else 子句計算機執行 流程 迴圈是讓計算機做重複任務的有效方法 while迴圈和break n 1 while n 100 if n 10 當n 11...