Django模板層3和ajax初始

2022-08-23 01:42:11 字數 4116 閱讀 3667

針對某個可以列舉完全的可能性字段,我們應該如何儲存

只要某個欄位的可能性是可以列舉完全的,那麼一般情況下都會採用choices引數

class

user(models.model):

username = models.charfield(max_length=32)

age =models.integerfield()

#性別gender_choices =(

(1,'男'

), (2,'女'

), (3,'其他'

), )

gender = models.integerfield(choices=gender_choices)

score_choices =(

('a','優秀'),

('b','良好'),

('c','及格'),

('d','不合格'),

)#保證字段型別跟列舉出來的元祖第乙個資料型別一致即可

score = models.charfield(choices=score_choices,null=true)

"""該gender欄位存的還是數字 但是如果存的數字在上面元祖列舉的範圍之內

那麼可以非常輕鬆的獲取到數字對應的真正的內容

"""

models.user.objects.create(username='

jason

',age=18,gender=1)

models.user.objects.create(username='

egon

',age=85,gender=2)

models.user.objects.create(username='

tank

',age=40,gender=3)

#存的時候 沒有列舉出來的數字也能存(範圍還是按照字段型別決定)

models.user.objects.create(username='

tony

',age=45,gender=4)

user_obj = models.user.objects.filter(pk=1).first()

#只要是choices引數的字段 如果你想要獲取對應資訊 固定寫法 get_欄位名_display()

print

(user_obj.get_gender_display())

user_obj = models.user.objects.filter(pk=4).first()

#如果沒有對應關係 那麼欄位是什麼還是展示什麼

print(user_obj.get_gender_display()) #

4

mtv:django號稱是mtv模型

m:models

t:templates

v:views

mvc:其實django本質也是mvc

m:models

v:views

c:controller

vue框架:mvvm模型

全自動:利用orm自動幫我們建立第三張關係表

class

book(models.model):

name = models.charfield(max_length=32)

authors = models.manytomanyfield(to='

author')

class

author(models.model):

name = models.charfield(max_length=32)

"""優點:**不需要你寫 非常的方便 還支援orm提供操作第三張關係表的方法...

不足之處:第三張關係表的擴充套件性極差(沒有辦法額外新增欄位...)

"""

純手動

class

book(models.model):

name = models.charfield(max_length=32)

class

author(models.model):

name = models.charfield(max_length=32)

class

book2author(models.model):

book_id = models.foreignkey(to='

book')

author_id = models.foreignkey(to='

author')

'''優點:第三張表完全取決於你自己進行額外的擴充套件

不足之處:需要寫的**較多,不能夠再使用orm提供的簡單的方法

不建議你用該方式

'''

半自動

class

book(models.model):

name = models.charfield(max_length=32)

authors = models.manytomanyfield(to='

author',

through='

book2author',

through_fields=('

book

','author')

)class

author(models.model):

name = models.charfield(max_length=32)

#books = models.manytomanyfield(to='book',

#through='book2author',

#through_fields=('author','book')#)

class

book2author(models.model):

book = models.foreignkey(to='

book')

author = models.foreignkey(to='

author')

"""through_fields欄位先後順序

判斷的本質:

通過第三張表查詢對應的表 需要用到哪個欄位就把哪個欄位放前面

你也可以簡化判斷

當前表是誰 就把對應的關聯欄位放前面

半自動:可以使用orm的正反向查詢 但是沒法使用add,set,remove,clear這四個方法

"""

總結:你需要掌握的是全自動和半自動 為了擴充套件性更高 一般我們都會採用半自動(寫**要給自己留一條後路)

非同步提交:區域性重新整理  

例子:github註冊,動態獲取使用者名稱實時的跟後端確認並實時展示的前端(區域性重新整理)  

朝傳送請求的方式

1.瀏覽器位址列直接輸入url回車 get請求  

2.a標籤href屬性 get請求  

3.form表單 get請求/post請求  

4.ajax get請求/post請求   

ajax 不是新的程式語言,而是一種使用現有標準的新方法(比較裝飾器)

小例子

"""

頁面上有三個input框

在前兩個框中輸入數字 點選按鈕 朝後端傳送ajax請求

後端計算出結果 再返回給前端動態展示的到第三個input框中

(整個過程頁面不准有重新整理,也不能在前端計算)

"""$(

'#btn

').click(function () ,#}

data:,

// 4.**函式:當後端給你返回結果的時候會自動觸發 args接受後端的返回結果

success:function (args)

console.log(typeof args)}})

})"""針對後端如果是用httpresponse返回的資料 **函式不會自動幫你反序列化

如果後端直接用的是jsonresponse返回的資料 **函式會自動幫你反序列化

httpresponse解決方式

1.自己在前端利用json.parse()

2.在ajax裡面配置乙個引數

(後面再講)

"""

django模板層知識要點

模版是純文字檔案。它可以產生任何基於文字的的格式 html,xml,csv等等 模版包括在使用時會被值替換掉的 變數,和控制模版邏輯的 標籤。下面是乙個小模版,它說明了一些基本的元素。後面的文件中會解釋每個元素。變數看起來就像是這樣 當模版引擎遇到乙個變數,它將計算這個變數,然後用結果替換掉它本身。...

Django 模板層 自定義標籤和過濾器

自定義模板標籤 要在模組內自定義標籤,首先,這個模組必須包含乙個名為register的變數,它是template.library的乙個例項 from django import template register template.library 自定義過濾器就是乙個帶有乙個或兩個引數的python...

django練習 模板層做個簡單的計算器頁面

views層 def cal view request if request.method get 顯示頁面 return render request,cal.html elif reqeust.method post 處理資料 拿x,計算方法,y x request.post.get x 如果使...