今天學到的新知識

2021-09-07 15:37:01 字數 3689 閱讀 3231

一、定義的規則

class teacherform(form):  #

必須繼承form

#建立字段,本質上是正規表示式

username =fields.charfield(

required=true, #

必填字段

error_messages=, #

顯示中文錯誤提示

widget=widgets.textinput(attrs=), #

自動生成input框

label="姓名"

, label_suffix=":"

) password = fields.charfield(required=true, error_messages=,

widget=widgets.passwordinput(attrs=),

label="密碼"

, label_suffix=":"

) #

不能為空

email =fields.emailfield(

required=true,

error_messages=,

widget=widgets.emailinput(attrs=), #

自動生成input框

label = "郵箱"

, label_suffix = ":"

) #不能為空且郵箱格式要一致

頁面上渲染

用第二種方式需要加上下面的這個:

二、下拉框的規則

三、判斷使用者民是不存在,存在就不新增了

需要匯入:

四、initial  修改時用到

五、自定義配置

1、在settings中:

2、匯入settings

from django.conf import settings
3、使用

六、多對多修改兩種方式(用form)

def

editteacher(request,nid):

obj = models.userinfo.objects.filter(id=nid, ut_id=1).first()

#print(obj.username)

ifnot

obj:

return redirect("

/teacherindex/")

if request.method=="

get"

:

print([obj.id for obj in obj.teacher_classes.all()]) #

[2] 拿到select框的id是為了要做預設顯示的

form = teacherform(initial=) #

就讓顯示乙個input框,並且帶有原來哪一行的內容

return render(request, "

editteacher.html

", )

else

: form = teacherform(data=request.post)

if form.is_valid():#

開始校驗,注意這要加括號

cls_list = form.cleaned_data.pop("

teacher_classes")

print

(cls_list)

models.userinfo.objects.filter(id=nid).update(**form.cleaned_data)

obj.teacher_classes.set(cls_list)

#更新第三張表

return redirect("

/teacherindex/")

else

:

return render(request, "

editteacher.html

", )

七、多對多新增(用form)

def

addteacher(request):

if request.method=="

get"

: form = teacherform() #

只是讓顯示乙個input框

return render(request, "

addteacher.html

", )

else

: form = teacherform(data=request.post)

#print(form) #, , ]>

if form.is_valid():#

開始驗證

#print('執行成功',form.cleaned_data) # 所有匹配成功,字典##

cls_list = form.cleaned_data.pop("

teacher_classes")

print("

**********==id

",cls_list)

form.cleaned_data[

'ut_id

'] = 1

#建立新老師的物件

teacher_obj = models.userinfo.objects.create(**form.cleaned_data)

#建立新老師和班級的關係

teacher_obj.teacher_classes.add(*cls_list) #

以前新增的是物件,現在也可以吧id新增進去

return redirect("

/teacherindex/")

else

:

#print("*****?",form.errors,type(form.errors))#返回失敗的結果

#print(form.errors["username"][0]) #拿到返回失敗的結果,渲染到頁面

return render(request, "

addteacher.html

", )

新知識 響應式

今天又學了新的知識 響應式!響應式的三個步驟 第一步 meta標籤 可以使用檢視的meta標籤來進行重置 第二步 流式布局 注意不要用px 第三步 媒介查詢 css3 media query 媒介查詢是響應式設計的核心,根據條件告訴瀏覽器如何為指定檢視寬度渲染頁面。例如 media screen a...

機房合作 新知識嘗試

在這次機房合作中,學到了很多新的知識。因為我負責的d層,所以就來寫一下在d層方面的嘗試。datatable轉list 機房重構的時候,用的都是datatable,機房合作的時候,小夥伴想要list的返回值,但是要乙個list返回值,就轉一下,量很多,而且一點兒也不簡潔,所以就寫了乙個公共類。publ...

開啟接受新知識的綠燈

前幾天,和運維組討論上線策略。對方提出預上線的版本與新生成的環境一一對應,我堅決反對,上線版本要頻繁使用預上線環境,同事向我解釋,貌似我在聽實際在想絕對不能讓步,屈服於他們。這涉及到學習效能的問題,當我們遇到與我們認知不一致或新知識的情況,引起了我們的習慣性防備。要接受新知識首先要打破習慣性防備。紅...