1. 程式人生 > >029:url標籤使用詳解

029:url標籤使用詳解

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'),
]