用pycharm打開FDJ項目python
URL分發器數據庫
視圖:django
視圖通常都寫在app的view,py中。而且視圖的第一個參數永遠都是request(一個HttpRequest)對象。這個對象存儲了請求過來的全部信息,包括攜帶的參數以及一些頭部信息等。在視圖中,通常是完成邏輯相關的操做。好比這個請求使添加一篇博客,那麼能夠經過request來接收到這些數據,而後存儲到數據庫中,最後再把執行的結果返回給瀏覽器。視圖函數的返回結果必須是httpResponse對象或者子類的對象。瀏覽器
實例:app
建立book app:函數
(Django-env) python manage.py startapp book
在book app下的views.py中添加:url
from django.http import HttpResponse def book_list(request): return HttpResponse("書籍列表:")
URL映射:spa
回到FDJ目錄下的urls.py中:code
from book import views urlpatterns = [ path('admin/', admin.site.urls), path('book/', views.book), ]
打開瀏覽器輸入http://127.0.0.1:8000/book/對象
補充:
視圖函數的返回的對象必須爲:
URL添加參數:
有時候,url中包含了一些參數須要動態調整。好比簡書某篇文章的詳情頁的url,是https://www.jianshu.com/p/a5aab9c4978e後面的a5aab9c4978e就是這篇文章的id,那麼簡述的文章詳情頁面的url就能夠寫成https://www.jianshu.com/p/<id>,其中id就是文章的id,那麼如何在django中實現這種需求呢。這時候咱們就能夠在path函數中,使用尖括號的形式來定義一個參數。好比我如今想要獲取一本書籍的詳細信息,那麼應該在url中指定這個參數。示例代碼以下:
在views.py中添加
def book_detil(request,book_id): #在數據庫中根據id提取圖書信息 text = book_id return HttpResponse(text)
在urls.py中的urlpatterns中添加
path('book/detil/<book_id>/',views.book_detil),
而後在瀏覽器網址欄輸入http://127.0.0.1:8000/book/1234
固然能夠加更多參數,好比
path('book/detil/<book_id>/<categrary>',views.book_detil),
那麼views.py中的book_detil必須改爲:
def book_detil(request,book_id,categrary): #在數據庫中根據id提取圖書信息 text = book_id #categrary....categrart的操做。。。 return HttpResponse(text)
另外一種url傳參數的方式是字符串匹配:
在urls.py中的urlpatterns中添加
path('book/author',views.author_detil),
在views.py中添加
def author_detil(request): author_id = request.GET.get('id') text= author_id return HttpResponse(text)
在瀏覽器網址欄輸入http://127.0.0.1:8000/book/author/?id=111
總結:
1.url映射:
2.url傳參數:
補充:
URL命名與反URL
1.爲何須要url命名?
2.如何給一個url指定名稱?
urlpatterns = [ path('',views.index,name='index'), ]
應用命名空間:
#應用命名空間 app_name = 'front' urlpatterns = [ path('',views.index,name='index') ]
之後在作反轉的時候就可使用'應用命名空間url名稱'的方式進行反轉,示例:
login_url = reverse('front:index')