forms組件html
forms能夠完成前端
1 生成前端html代碼django
2 校驗數據後端
3 展現校驗信息瀏覽器
forms組件的使用安全
1 簡單forms組件校驗數據服務器
1 寫一個forms校驗的類 from django import forms class RegForm(forms.Form): # forms組件中定義的字段,默認必須傳值 name = forms.CharField(max_length=6) pwd = forms.charField(max_length=8,min_length=3) email = forms.EmailField()
2 實例化RegForm傳值
# 注意傳入的字典的key必須跟類裏面的變量名一致,校驗的數據能夠多傳,可是不能少傳
res = RegForm({"name":"dsb","pwd":"123","email":"123@qq.com"})
3 數據是否合法
res.is_valid() # 若是數據所有驗證經過才爲True不然爲False
4 查看驗證經過的數據
res.cleaned_data # 會將驗證同的數據存放到cleaned_data中
5 查看校驗失敗的數據
res.errors
渲染標籤cookie
froms組件三種渲染方式session
第一種(封裝程度過高,無法作擴展,不推薦使用)
{{ form_obj.as_p }}
{{ form_obj.as_ul }}
第二種
<form>
<p>{{ form_obj.name.label}}{{ form_obj.name }}</p>
<p>{{ form_obj.pwd.label}}{{ form_obj.pwd }}</p>
<p>{{ form_obj.email.label}}{{ form_obj.email }}</p>
</form>
第三種
<form>
{% for foo in form_obj %}
<p>{{ foo.label }}{{ foo }}</p>
{% endfor %}
</form>
展現報錯信息spa
在p標籤內添加span標籤用於顯示錯誤信息
<p>{{ foo.label }}{{ foo }} <span>{{ foo.errors.0 }}</span></p>
局部鉤子
導入 from django.core.exceptions import ValidationError
def clean_字段名稱(self):
self.add_error 添加錯誤
校驗完成返回校驗的字段
全局鉤子
def clean(self):
校驗完成返回self.cleaned_data
forms組件能夠實現三大功能,其實就是爲modles種的表服務
https://www.cnblogs.com/liuqingzheng/articles/9509775.html
https://www.cnblogs.com/Dominic-Ji/p/9240365.html?tdsourcetag=s_pctim_aiomsg
http協議不保存用戶狀態(信息),Cookie和Session都是爲了可以保存用戶信息
Cookie
本質:保存在瀏覽器上的鍵值對
用途:標識當前用戶信息
設置Cookie
django返回的信息都是HttpResponse對象
res = render()
res.set_cookies("name","jason")
獲取Cookie
request.COOKIES['key']
request.COOKIES.get('key')
超時時間
max_age=None
Session:
本質:保存在服務器上的鍵值對
用途:記錄當前用戶信息
session其實也是基於cookie工做的爲了數據更加安全,給瀏覽器存一個隨機字符串,將用戶信息存在服務端,用戶在訪問時,拿到隨機字符串和後端進行匹配
設置Session(django默認的session過時時間是14天)
request.session['k1'] = xxx
# 上面這句話幹了三件事
# 1 內部生成一個隨機字符串,一個瀏覽器對應一個
# 2 隨機數字符串與數據會存入django session表中
# 3 將隨機字符串設置到瀏覽器的cookie中
獲取session
request.session.get("k1")
刪除session
# 刪除當前會話的全部session數據
request.session.delete() # 只刪除django_session表中的數據
# 刪除當前會話數據並刪除繪畫的Cookie
request.session.flush() # 表和瀏覽器的session都刪除
設置會話session和cookie的超時時間
request.seesion.set_expiry(value) # value值同cookie設置超時時間相同
若是value是整數,session會在些秒後失效
若是value是datatime或timedalta,會在這個時間後失效
若是value是0,會在用戶關閉瀏覽器後失效
若是value是None,session會依賴全局session失效策略