URL使用
視圖:
我們運行項目在網頁上查看到的我們稱之為
視圖
視圖一般在views.py下編輯
它的第一個參數永遠都是request,通過它請求一些數據返回給網頁給我們查看。
視圖函數的返回結果必須是HttpResponseBase對象或者子類的對象。
from django.http import HttpResponse
def xxx(request):
#通過return返回 HttpResponseBase
return HttpResponse("通過request請求返回的值!")
映射
寫完視圖后需要與Url進行映射好比http://127.0.0.1:8000/id
網站后面輸入的id即為url,django就會從url.py進行尋找視圖
#需要使用django.urls.path函數進行包裹映射和視圖
from django.urls import path
#導入需要映射的文件
from app import views
#我們把這些匹配放在urlpatterns變量中,他是django規定的不用深究
urlpatterns = [
#第一個參數為url,第二個為需要的視圖函數
path('id/',views.xxx),
]
這樣訪問http://127.0.0.1:8000/id
的時候就會看到設置的視圖
在url中添加參數
有時候url需要一些動態調整,127.0.0.1/p/1
比如博客某文章的id就是1,那么它是/p/<id>
這樣的動態的
path('book/',views.book_list),
path('book/<book_id>/',views.book_detail)
而在views中我們可以這樣編寫:
方法①:
def book_detail(request,book_id):
text = "您輸入的書籍的id是:%s" % book_id
return HttpResponse(text)
這樣在網頁輸入的url就是它的id,例如127.0.0.1/book/<1>
那么會返回您輸入的書籍的id是:<1>
方法②:
通過查詢字符串的方式傳遞一個參數過去。示例代碼如下:
path('book/detail/',views.book_detail)
在views.py中的代碼如下:
def book_detail(request):
book_id = request.GET.get("id")
text = "您輸入的書籍id是:%s" % book_id
return HttpResponse(text)
那么就可以通過/book/detail/?id=1即可將參數傳遞過去。
在URL中包含其他的urls模塊
我們的項目不可能就一個app,那么我們就需要用多個views,要是使用一個url映射會顯得特別混亂,那么我們就需要使用不同的url
不懂include函數的點擊右方鏈接查看→include基本使用文章鏈接←
# app/urls.py文件:
#我們需要導入include。幫助我們使用多個url
from django.urls import path,include
urlpatterns = [
#把需要的`url`放在`include`中,這樣凡是在`book/`里面的url時都會去`book`app下的urls.py中尋找相應的值
path('book/',include("book.urls"))
]