日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

Django运维后台的搭建之二:建立template和对应的ModelForm

發(fā)布時間:2024/4/14 编程问答 41 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Django运维后台的搭建之二:建立template和对应的ModelForm 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

在前一篇我們已經(jīng)建立了一套數(shù)據(jù)庫用來存儲我們的云資源資料以及有了一個簡單的admin后臺,但是這個后臺畢竟太難看了,我們可以自己搭建一個更漂亮的界面來滿足領(lǐng)導(dǎo)的需求,那么這個時候就需要template。在template中,我們存放HTML頁面,并通過Django的API能夠調(diào)用這些界面,同時能夠把一些數(shù)據(jù)傳遞到這些頁面上。


1.我們在之前已經(jīng)建立好的Online文件夾里建立一個templates文件夾。


2.url.py里制定訪問的網(wǎng)頁路徑,在這里我們先制定兩個,一個是線上服務(wù)器的界面,另一個是數(shù)據(jù)庫:

from?django.conf.urls?import?url from?django.contrib?import?admin import?Online.views urlpatterns?=?[url(r'^admin/',?admin.site.urls),url(r'^alionlineecs/',?Online.views.alionlineecs),url(r'^rds/',?Online.views.rds), ]

3.在views.py里寫上對應(yīng)的函數(shù):

#?-*-?coding:?UTF-8?-*- from?django.shortcuts?import?render from?.models?import?alionlineECS,RDS????#這里的import是來自model.py里的 def?alionlineecs(request):data?=?alionlineECS.objects.all()????#這里也是要跟model.py一樣context?=?{'data':?data,}#跳轉(zhuǎn)到相應(yīng)頁面,并將值傳遞過去return?render(request,'alionlineecs.html',context)????#規(guī)定alionlineecs.html作為展示頁def?rds(request):data?=?RDS.objects.all()context?=?{'data':data,}return?render(request,'rds.html',context)


這個代碼里面我寫了 data=alionlineECS.objects.all(),這是通過DJANGO的ORM來進(jìn)行SQL操作,建立context這個字典,將data值傳遞到相應(yīng)頁面。


4.在template文件夾里面建立alionlineecs.html和rds.html 這兩個文件,alionlineecs.html如下:

<!DOCTYPE?html> <html> <head?lang="en">??<meta?charset="UTF-8">??<title></title>?? </head> <body><table><tr><th>云服務(wù)器名稱</th><th>云服務(wù)器類型</th><th>云服務(wù)器內(nèi)網(wǎng)地址</th><th>云服務(wù)器外網(wǎng)地址</th><th>云服務(wù)器外網(wǎng)帶寬</th><th>云服務(wù)器配置</th><th>備注</th></tr>{%?for?item?in?data?%}<tr><td>{{?item.ecs_name?}}</td><td>{{?item.ecs_type?}}</td><td>{{?item.ecs_inip?}}</td><td>{{?item.ecs_outip?}}</td><td>{{?item.ecs_ipwidth?}}</td><td>{{?item.ecs_spec?}}</td><td>{{?item.ecs_remarks?}}</td></tr>{%?endfor?%}</table> </body> </html>

而rds.html的內(nèi)容如下:

<!DOCTYPE?html> <html> <head?lang="en">??<meta?charset="UTF-8">??<title></title>?? </head> <body><table><tr><th>數(shù)據(jù)庫名稱</th><th>數(shù)據(jù)庫類型</th><th>mysql版本</th><th>數(shù)據(jù)庫規(guī)格</th><th>數(shù)據(jù)庫地址</th><th>備注</th><th>存儲空間</th></tr>{%?for?item?in?data?%}<tr><td>{{?item.rds_name?}}</td><td>{{?item.rds_type?}}</td><td>{{?item.rds_mysql?}}</td><td>{{?item.rds_spec?}}</td><td>{{?item.rds_ip?}}</td><td>{{?item.rds_remark?}}</td><td>{{?item.rds_status?}}</td></tr>{%?endfor?%}</table> </body> </html>

可以看出item里面的各個項就是model.py里面的項,這樣就會一一對應(yīng)。其中用{% %}括起的就是django的模板語言,在django的模板語言中,包含了類似于for循環(huán),if等條件判斷語句,可以非常靈活地滿足用戶的各種需求。其中,` data `用來在頁面上顯示data的值。此后,我們還將提到的include和block功能,將會非常方便地繼承網(wǎng)頁。


5.現(xiàn)在去啟動django,然后在瀏覽器進(jìn)入admin后臺,添加兩個rds實例,比如:


然后在瀏覽器嘗試url中定義的rds的路徑,就可以訪問相應(yīng)頁面了:


但是我們還是不希望進(jìn)入admin去改,畢竟 admin是后臺,我們還是更希望在頁面里進(jìn)行增刪改查的工作,那么要通過頁面往數(shù)據(jù)庫里傳遞數(shù)據(jù)是要通過表單的,而django的表單就叫做forms。這里我們使用ModelForm,因為我們之前已經(jīng)寫了一個model.py,而要添加的內(nèi)容肯定都是model.py里的項,所以就采用ModelForm,改動很小,甚至可以用ModelForm來改model.py。


  • 首先現(xiàn)在Online這個文件夾里面建立一個叫form.py,內(nèi)容如下:

  • #?-*-?coding:?UTF-8?-*-?? from?django.forms?import?ModelForm from?.models?import?alionlineECS,SLB,RDS????#這里暫時先加這三項 #定義Node的Form,Form名字為?模式名+Form class?alionlineForm(ModelForm):#自定義ModelForm的內(nèi)容class?Meta:#該ModelForm參照Model:?alionlineECSmodel?=?alionlineECS#在Form中不顯示注冊人這個字段,下面也是?exclude?=?['ecs_signer'] class?SLBForm(ModelForm):class?Meta:model?=?SLBexclude?=?['slb_signer'] class?RDSForm(ModelForm):class?Meta:model?=?RDSexclude?=?['rds_signer']

    ?2.由于要建立url與頁面的關(guān)系, 我們要在url.py里追加這樣的話:

    url(r'^addalionlineecs/',?Online.views.addalionlineecs), url(r'^addslb/',?Online.views.addslb), url(r'^addrds/',?Online.views.addrds),


    ?3.然后還要在view.py里添加對應(yīng)的函數(shù)關(guān)系:

    from?forms?import?alionlineForm,SLBForm,RDSForm def?addalionlineecs(request):#獲取來自alionlineForm的表單數(shù)據(jù)??form?=?alionlineForm(request.POST?or?None)#判斷form是否有效if?form.is_valid():#創(chuàng)建實例,需要做些數(shù)據(jù)處理,暫不做保存instance?=?form.save(commit=False)#將登錄用戶作為登記人instance.node_signer?=?request.user#保存該實例instance.save()#跳轉(zhuǎn)至列表頁面??return?redirect('/alionlineecs/')#創(chuàng)建context來集中處理需要傳遞到頁面的數(shù)據(jù)??context?=?{'form':?form,}#如果沒有有效提交,則仍留在原來頁面??return?render(request,?'addalionlineecs.html',?context)

    ?4.來到template里新寫一個addalionlineecs.html,內(nèi)容如下:

    <!DOCTYPE?html> <html> <head?lang="en">??<meta?charset="UTF-8">??<title></title>?? </head> <body><form?method='POST'?action=''>{%?csrf_token?%}{{?form?}}<input?type='submit'?value='提交'?/></form> </body> </html>

    ?5.來到瀏覽器里,打開對應(yīng)的addonlineecs.html就會看到添加的界面了,就不用在admin里添加了:

    點擊旁邊的“提交”之后,看到地址欄機(jī)會跳到alionlineecs這個界面:


    這樣一個基于頁面的增刪改查的環(huán)境就搭建完畢了。

    轉(zhuǎn)載于:https://blog.51cto.com/chenx1242/1946950

    總結(jié)

    以上是生活随笔為你收集整理的Django运维后台的搭建之二:建立template和对应的ModelForm的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。