一、定義的規則
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 settings3、使用
六、多對多修改兩種方式(用form)
def七、多對多新增(用form)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")
(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
", )
defaddteacher(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...
開啟接受新知識的綠燈
前幾天,和運維組討論上線策略。對方提出預上線的版本與新生成的環境一一對應,我堅決反對,上線版本要頻繁使用預上線環境,同事向我解釋,貌似我在聽實際在想絕對不能讓步,屈服於他們。這涉及到學習效能的問題,當我們遇到與我們認知不一致或新知識的情況,引起了我們的習慣性防備。要接受新知識首先要打破習慣性防備。紅...