django之路:第二天,django之路第二天
一個項目有多個APP,如果你要實現其中的一個APP功能,怎麼做?接下來看:
第一步:你已經建立好了一個項目
第二步:你已經在項目下建立好了一個APP
第三步:你已經把APP添加到中介軟體裡了(圖片一)
第四步:然後更改你的urls,改成這個樣子(圖片二)
第五步:然後進入你的APP裡面,找到“views”這個.py檔案,然后里面寫上(圖片三)
第六步:啟動服務
第七步:把地址改為:http://127.0.0.1:8000/index/
第八步:看效果(圖片四)
————————————————————————————————————————————————————————————————————————
疑問①:urls中的路由前面為什麼會有“index”?
答:他是告訴你訪問的時候在那個路徑下,如果不寫預設的是根目錄,也就是http://127.0.0.1:8000,
如果寫了就變成http://127.0.0.1:8000/index/。
疑問②:還是不懂!
答:我寫的按照PEP8來說是不規範的,因為url後面跟的是你的APP的模組名字,如果你的APP名字是“fuck”的話,那麼你的urls這樣寫
“path('fuck/', views.index)”,這樣就變成了http://127.0.0.1:8000/fuck/,這樣可以讓別人知道這是訪問的你“fuck”APP下面的功能函數。
疑問③:如果我想中間加一個路徑怎麼辦?比如:http://127.0.0.1:8000/fuck/you/怎麼辦?
答:往下看!算了,先說吧,可以使用路由的“include”進行路由分發,接下來會說
————————————————————————————————————————————————————————————————————————————
URL中的name是什嗎?
在一個項目中通常會看到一個路由內有這麼一個寫法:
path("XXX/",views.XXX,name="XXX"),
特麼的這個name是個什麼東西?為什麼要寫它?其實:
這個東西很重要,因為在項目中經常會根據它來尋找視圖函數以及在網址更改的情況下,只要它沒改,你照樣可以訪問。
不懂?不懂就對了,對於新人來說不懂就對了,看代碼吧!
第一步:回到最開始的項目上(你時間充足也可以再建立一個項目和APP)
第二步:更改url(圖片五)
第三步:建立一個html檔案(圖片七)
第四步:更改視圖函數(圖片六)
第五步:在html檔案中隨便寫點東西(圖片八)
第六步:沒毛病了,看第七步
第七步:運行系統
我的第一個系統起來了,url是:http://127.0.0.1:8000/batman/,但是老闆說他不喜歡蝙蝠俠,喜歡超人,所以我這個得改,我能咋辦?
改唄,然後我就改,但是你會發現:如果這樣寫“死網址”,
會使得在改了網址後,模板,視圖(比如用於URL跳轉),模型(擷取記錄訪問地址等),用了此網址的,都必須進行相應的更改,修改的代價很大,一不小心,有的地方沒改過來,就不能用了。
咋辦?幸虧我有先見之明,我在每個url後面都留了個“name”,嘿嘿..........,傻笑什麼,擼代碼去!得嘞,您老兒說得對,我麻利兒的就開始改,改完之後一看效果:66666666666666
怎麼改的?接著看例子:
第一步:增加url(圖片九)
第二步:修改視圖(圖片十)
第三步:看效果呀!!
然後你會發現,你再輸入“batman”的時候,它會變成“supman”,但是功能沒變,如果你想讓它變............操!事兒多!你在視圖函數中直接添加一條對應的url的視圖函數不得了!
________________________________________________________________________________________
原理:
當你請求過來之後,你輸入“batman”之後,它會執行“index2”函數,因為這個函數是你事先寫好的專門跳轉用的,然後它會根據“reverse”去尋找你的“name=batman”的url,找到之後它就會執行這個url代碼,然後做相應的處理
接下來你就會看到“supman”對應的功能了,但是你的本來的功能代碼卻沒有改變,變得只是你的url
————————————————————————————————————————————————————————————————————————————————————————————
回答疑問③:
urls中有一個參數叫做“include”,這個是專門用來進行路由分發的,源碼就不說了,會暈............
如何操作?往下看
第一步:在APP中添加url.py檔案(圖片十一)
第二步:修改根url(圖片十二)
第三步:修改APP下的的urls.py檔案(圖片十三)
第四步:修改視圖函數(圖片十四)
第五步:看效果啊!!!(http://127.0.0.1:8000/wondwom/look/)
——————————————————————————————————————————————————————————————————
代碼部分:
根urls:from django.contrib import adminfrom django.urls import path,includefrom batman1 import viewsurlpatterns = [ path('admin/', admin.site.urls), path('batman/', views.index2), path('supman/', views.index,name="batman"),]APP的視圖函數:from django.shortcuts import render,HttpResponse,HttpResponseRedirectfrom django.urls import reverse # 調用模組def index(request): return render(request,"index.html")def index2(request): return HttpResponseRedirect(reverse("batman"))
根urls:from django.contrib import adminfrom django.urls import path,includeurlpatterns = [ path('admin/', admin.site.urls), path('wondwom/', include("batman1.urls")),]APP中的urls:from django.urls import pathfrom . import views # 同級目錄下用"."urlpatterns = [ path('look/', views.look),]APP中的視圖函數:from django.shortcuts import render,HttpResponse,HttpResponseRedirectdef look(request): return HttpResponse("-------------> OK")