029:url標籤使用詳解
阿新 • • 發佈:2018-12-25
url標籤使用詳解:
在模版中,我們經常要寫一些 url ,比如某個 a 標籤中需要定義 href 屬性。當然如果通過硬編碼的方式直接將這個 url 寫死在裡面也是可以的。但是這樣對於以後專案維護可能不是一件好事。因此建議使用這種反轉的方式來實現,類似於 django 中的 reverse 一樣。示例程式碼如下:
<a href="{% url 'book:list' %}">圖書列表頁面</a>
如果 url 反轉的時候需要傳遞引數,那麼可以在後面傳遞。但是引數分位置引數和關鍵字引數。位置引數和關鍵字引數不能同時使用。示例程式碼如下:
# path部分path('detail/<book_id>/',views.book_detail,name='detail') # url反轉,使用位置引數 <a href="{% url 'book:detail' 1 %}">圖書詳情頁面</a> # url反轉,使用關鍵字引數 <a href="{% url 'book:detail' book_id=1 %}">圖書詳
如果想要在使用 url 標籤反轉的時候要傳遞查詢字串的引數,那麼必須要手動在在後面新增。示例程式碼如下:
<a href="{% url 'book:detail' book_id=1 %}?page=1">圖書詳情頁面</a>
如果需要傳遞多個引數,那麼通過空格的方式進行分隔。示例程式碼如下:
<a href="{% url 'book:detail' book_id=1 page=2 %}">圖書詳情頁面</a>
例項程式碼如下:
index.html:
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Title</title> </head><body> <ul> <li><a href="/">首頁</a></li> <li><a href="{% url 'book' %}">書籍</a></li> <li><a href="{% url 'city' %}">城市</a></li> {# 多個引數就是使用空格分開 #} <li><a href="{% url 'movie' myid='5' youid='8' %}">電影</a></li> {# 查詢字串只能在後新增 例如: ?next=/ #}
<li><a href="{% url 'login' %}?next=/">登陸</a></li> </ul> </body> </html>
views.py:
# -*- coding: utf-8 -*- from django.shortcuts import render from django.http import HttpResponse def index(request): return render(request, 'index.html') def book(request): return HttpResponse('書籍') def login(request): next = request.GET.get('next') text = '你輸入的url是:%s' % next return HttpResponse(text) def city(request): return HttpResponse('城市') def movie(request, myid, youid): text = '你輸入的電影分類是:%s; %s' % (myid, youid) return HttpResponse(text)
urls.py:
from django.urls import path from . import views urlpatterns = [ path('', views.index, name='index'), path('book/', views.book, name='book'), path('city/', views.city, name='city'), path('movie/<myid>/<youid>/', views.movie, name='movie'), path('login/', views.login, name='login'), ]