Python中url標籤使用詳解

url標籤:

1.在模板中,咱們常常要使用一些url,實現頁面之間的跳轉,好比某個a標籤中須要定義href屬性。固然若是經過硬編碼的方式直接將這個url固定在裏面也是能夠的,可是這樣的話,對於之後進行代碼的維護,可能就比較麻煩,所以建議使用這種動態的方式來實現,相似於django中reverse同樣。示例代碼以下:
<li><a href="/">首頁</a></li>
{#  此時採用動態獲取url的方式,使用url標籤能夠在DTL模板中動態獲取url,#}
{#    而使用reverse()函數,能夠在Django中動態獲取url標籤,將視圖函數進行反轉,獲得url.  #}
    <li><a href="{% url 'book' %}">讀書</a></li>
    <li><a href="{% url 'movie' %}">電影</a></li>
    <li><a href="{% url 'city' %}">同城</a></li>
2.若是url進行反轉的時候,須要傳遞參數,那麼就能夠在後面傳遞,可是參數有位置參數和關鍵字參數。位置參數和關鍵字參數不能同時使用。示例代碼以下:
{#  url反轉,使用位置參數,可是關鍵字參數和位置參數不能同時使用  #}
    <li><a href="{% url 'detal' 1 %}"></a></li>
    
{#  url反轉,使用關鍵字參數  #}
{#  接收url中傳遞參數,能夠在url中直接傳遞參數,而且指定參數的值,可是此時=兩邊不能有空格,否者的話,不能識別  #}
    <li><a href="{% url 'detail' book_id='3' %}">最火的一篇文章詳情</a></li>
3.若是要在使用url標籤反轉的時候要傳遞查詢字符串的參數,那麼必需要手動在後面添加,示例代碼以下:
{#  在模板中使用查詢字符串的形式添加參數,此時就只能和reverse()函數同樣,只能手動的添加,使url進行拼接。  #}
{#  實現登陸成功以後跳轉到首頁  #}
    <li><a href="{% url 'login' %}?next=/">登陸</a></li>
4.若是要傳遞多個參數,那麼能夠經過空格的方式進行分割,示例代碼以下:
<li><a href="{% url 'detail' book_id='3' author='小螞蟻' %}">最火的一篇文章詳情</a></li>
如下是完整代碼實現:

views.py代碼以下:

from django.http import HttpResponse
from django.shortcuts import render


def index(request):
    return render(request,'index.html')


# 定義登陸視圖函數
def login(request):
    next = request.GET.get('next')
    text = "登陸完成後,要跳轉的頁面是:%s" % next
    return HttpResponse(text)


def book(request):
    return HttpResponse('圖書頁面')


# 在進行訪問url的時候進行傳遞參數視圖,直接傳入一個參數
def book_detail(request,book_id,author):
    text = '您輸入的圖書id是:%s,做者是:%s' % (book_id,author)
    return HttpResponse(text)


def movie(request):
    return HttpResponse('電影頁面')


def city(request):
    return HttpResponse("同城頁面")

index.html代碼以下:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <style>
        .nav {
            overflow: hidden;
        }
        .nav li {
            float: left;
        {#  將li標籤前面的圓點去掉  #}
            list-style: none;
            {# 定義li標籤之間的外邊距,上下爲0,左右爲20px #}
            margin: 0 20px;
        }
    </style>
</head>
<body>
<ul class="nav">
    <li><a href="/">首頁</a></li>
{#  此時採用動態獲取url的方式,使用url標籤能夠在DTL模板中動態獲取url,#}
{#    而使用reverse()函數,能夠在Django中動態獲取url標籤,將視圖函數進行反轉,獲得url.  #}
    <li><a href="{% url 'book' %}">讀書</a></li>
    <li><a href="{% url 'movie' %}">電影</a></li>
    <li><a href="{% url 'city' %}">同城</a></li>
{#  url反轉,使用位置參數,可是關鍵字參數和位置參數不能同時使用  #}
{#    <li><a href="{% url 'detal' 1 %}"></a></li>#}
{#  url反轉,使用關鍵字參數  #}
{#  接收url中傳遞參數,能夠在url中直接傳遞參數,而且指定參數的值,可是此時=兩邊不能有空格,否者的話,不能識別  #}
    <li><a href="{% url 'detail' book_id='3' author="小螞蟻" %}">最火的一篇文章詳情</a></li>
{#  在模板中使用查詢字符串的形式添加參數,此時就只能和reverse()函數同樣,只能手動的添加,使url進行拼接。  #}
{#  實現登陸成功以後跳轉到首頁  #}
    <li><a href="{% url 'login' %}?next=/">登陸</a></li>
</ul>
</body>
</html>
視圖函數與url之間的映射:

urls.py代碼以下:html

from django.urls import path
from .  import views

urlpatterns = [
    path('',views.index,name = 'index'),
    path('book/',views.book,name = 'book'),
    path('movie/',views.movie,name = 'movie'),
    path('city/',views.city,name = 'city'),
    path('book/detail/<book_id>/<author>/',views.book_detail,name = 'detail'),
    path('login/',views.login,name = 'login'),

]
瀏覽器中查看結果:

在這裏插入圖片描述
在這裏插入圖片描述
在這裏插入圖片描述

相關文章
相關標籤/搜索