django2与ajax,Python-Django-Ajax进阶2
-forms組件的渲染錯誤信息
在模板中:{{ foo.errors.0 }}
-forms使用bootstrap樣式
widget=widgets.EmailInput(attrs={'class':'form-control'}))
-全局和局部鉤子函數
AOP:面向切面編程
-局部鉤子函數(再校驗name)
def clean_name(self):
# 從cleaned_data中取出字段的值
name = self.cleaned_data.get('name')
# # 校驗是否以sb開頭
if name.startswith('sb'):
raise ValidationError('不能以sb開頭')
else:
return name
-全局鉤子函數
def clean(self):
pwd=self.cleaned_data.get('pwd')
re_pwd=self.cleaned_data.get('re_pwd')
if pwd==re_pwd:
# 正確,返回self.cleaned_data
return self.cleaned_data
else:
# 校驗失敗,拋異常
raise ValidationError('兩次密碼不一致')
cookie,session,token
cookie
-cookie是存在瀏覽器上的鍵值對{'name':'lqz','password':123}
-服務器寫到瀏覽器上的
session:
-因為cookie不安全,所有出了session
-存在于服務器上的鍵值對 'sfdasdfa':{'name':'lqz','password':123}
token:(待研究)
cookie的使用:
設置cookie:
-HttpResponse的對象 obj.set_cookie(key,value,超時時間)
-obj.set_signed_cookie('name','egon',salt='123')
取cookie:
-request.COOKIES.get(key)
-name=request.get_signed_cookie('name',salt='123')
刪除:
HttpResponse的對象 obj.delete_cookie('is_login')
session的使用:
設置
-request.session['name']=‘lqz’
-request.session['age']=‘18’
取cookie:
-request.session.get('name')
刪除:
-request.session.delete() 只刪數據庫
-request.session.flush() 瀏覽器cookie和數據庫
了解:其他參數(超時時間)
auth組件
Auth模塊是Django自帶的用戶認證模塊:
我們在開發一個網站的時候,無可避免的需要設計實現網站的用戶系統。此時我們需要實現包括用戶注冊、用戶登錄、用戶認證、注銷、修改密碼等功能,這還真是個麻煩的事情呢。
Django作為一個完美主義者的終極框架,當然也會想到用戶的這些痛點。它內置了強大的用戶認證系統--auth,它默認使用 auth_user 表來存儲用戶數據。
擴展默認的auth_user表
from django.contrib.auth.models import AbstractUser
class UserInfo(AbstractUser):
"""
用戶信息表
"""
nid = models.AutoField(primary_key=True)
phone = models.CharField(max_length=11, null=True, unique=True)
def __str__(self):
return self.username
注意:
按上面的方式擴展了內置的auth_user表之后,一定要在settings.py中告訴Django,我現在使用我新定義的UserInfo表來做用戶認證。寫法如下:
# 引用Django自帶的User表,繼承使用時需要設置
AUTH_USER_MODEL = "app名.UserInfo"
再次注意:
一旦我們指定了新的認證系統所使用的表,我們就需要重新在數據庫中創建該表,而不能繼續使用原來默認的auth_user表了。
ContentTypefrom django.db import models
from django.contrib.contenttypes.models import ContentType
from django.contrib.contenttypes.fields import GenericForeignKey, GenericRelation
class Course(models.Model):
title = models.CharField(max_length=32)
# 不會在數據庫中生成字段,只用于數據庫操作
policy = GenericRelation('PricePolicy',object_id_field='object_id',content_type_field='contentType')
class DegreeCourse(models.Model):
title = models.CharField(max_length=32)
class PricePolicy(models.Model):
# 跟ContentType表做外鍵關聯
contentType = models.ForeignKey(to=ContentType)
# 正數
object_id = models.PositiveIntegerField()
# 引入一個字段,不會在數據庫中創建,只用來做數據庫操作
content_obj = GenericForeignKey('contentType', 'object_id')
period = models.CharField(max_length=32)
price = models.FloatField()
TTL:
python django -5 進階
高級知識點包括: 靜態文件處理 中間件 上傳圖片 Admin站點 分頁 使用jquery完成ajax 管理靜態文件 項目中的CSS.圖片.js都是靜態文件 配置靜態文件 在settings 文件中定義 ...
Python - Django - AJAX 實現 POST 請求
index.html: +
Python Django Ajax 傳遞列表數據
function getTableContent(node) { event.preventDefault(); var tr = node.parentNode.parentNode; var id ...
python Django Ajax基礎
升級版: ajax 創建多對多以及增加示例: views中的接收
Python之路【第十七篇】:Django【進階篇 】
Python之路[第十七篇]:Django[進階篇 ] ? Model 到目前為止,當我們的程序涉及到數據庫相關操作時,我們一般都會這么搞: 創建數據庫,設計表結構和字段 使用 MySQLdb 來連接 ...
Python之路【第十七篇】:Django【進階篇】
Python之路[第十七篇]:Django[進階篇 ] ? Model 到目前為止,當我們的程序涉及到數據庫相關操作時,我們一般都會這么搞: 創建數據庫,設計表結構和字段 使用 MySQLdb 來連接 ...
Python開發【第二十二篇】:Web框架之Django【進階】
Python開發[第二十二篇]:Web框架之Django[進階] ? 猛擊這里:http://www.cnblogs.com/wupeiqi/articles/5246483.html 博客園 首頁 ...
Python之路,Day15 - Django適當進階篇
Python之路,Day15 - Django適當進階篇 ? 本節內容 學員管理系統練習 Django ORM操作進階 用戶認證 Django練習小項目:學員管理系統設計開發 帶著項目需求學習是最有趣 ...
python Django之Ajax
python Django之Ajax AJAX,Asynchronous JavaScript and XML (異步的JavaScript和XML),一種創建交互式網頁應用的網頁開發技術方案. 異步 ...
python學習-- Django Ajax CSRF 認證
使用 jQuery 的 ajax 或者 post 之前 加入這個 js 代碼:http://www.ziqiangxuetang.com/media/django/csrf.js /*======== ...
隨機推薦
jsonp 實例
一直以為很復雜吧?其實很簡單,簡單到你不敢相信 1.前端引好jquery文件 2.前端代碼: $.ajax({ ? ? ? url: 'http://www.xxxxxxxx.com/expand.a ...
Effective C++ -----條款07:為多態基類聲明virtual析構函數
polymorphic(帶多態性質的)base classes應該聲明一個virtual析構函數.如果class帶有任何virtual函數,它就應該擁有一個virtual析構函數. Classes的設 ...
轉:關于視頻H264編解碼的應用實現
轉:http://blog.csdn.net/scalerzhangjie/article/details/8273410 項目要用到視頻編解碼,最近半個月都在搞,說實話真是走了很多彎路,浪費了很多時 ...
基于AngularJS/Ionic框架開發的性能優化
AngularJS作為強大的前端MVVM框架,雖然已經做了很多的性能優化,但是我們開發過程中的不當使用還是會對性能產生巨大影響. 下面提出幾點優化的方法: 1.?使用單次綁定符號{{::value}} ...
Mac 下顯示隱藏文件
將下面的命令粘貼進終端,按提示操作即可(可能需要輸入電腦密碼) 顯示:defaults write com.apple.finder AppleShowAllFiles -bool true 隱藏:d ...
linux下實現redis共享session的tomcat集群
為了實現主域名與子域名的下不同的產品間一次登錄,到處訪問的效果,因此采用rediss實現tomcat的集群效果.基于redis能夠異步講緩存內容固化到磁盤上,從而當服務器意外重啟后,仍然能夠讓sess ...
10055 - Hashmat the Brave Warrior
Problem A Hashmat the brave warrior Input:?standard input Output:?standard output Hashmat is a brave ...
hibernate-部分字段查詢方案
hibernate的延遲加載與本列記錄不一樣,延遲加載正常一般用于關聯字段,或者大型字段使用. 本列的情況主要用于,某一張表有幾十甚至上百個字段,例如財務報表等.但是在使用某些場景是卻大多只是用其10 ...
.NET 實現DES加密解密處理
.NET 實現DES加密解密處理 using System; using System.Text; using System.Security.Cryptography; using System.I ...
技術文檔分享_linux中生成考核用的GPT分區表結構修復
注:歷史版本,后期改用python實現了 實驗一: 目的:用于生成大量模擬破壞GPT分區結構案例,并生成唯一方式修復后的評判方法.故障:在一個完整的GPT分區磁盤上,丟失了GPT主分區表,或備份分區表 ...
總結
以上是生活随笔為你收集整理的django2与ajax,Python-Django-Ajax进阶2的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 计算机硬件组成 pdf,计算机硬件的组成
- 下一篇: mysql数据库里的表格_mysql数据