溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

Python中url標(biāo)簽怎么用

發(fā)布時(shí)間:2021-07-19 10:13:40 來源:億速云 閱讀:186 作者:小新 欄目:開發(fā)技術(shù)

小編給大家分享一下Python中url標(biāo)簽怎么用,相信大部分人都還不怎么了解,因此分享這篇文章給大家參考一下,希望大家閱讀完這篇文章后大有收獲,下面讓我們一起去了解一下吧!

1.在模板中,我們經(jīng)常要使用一些url,實(shí)現(xiàn)頁面之間的跳轉(zhuǎn),比如某個(gè)a標(biāo)簽中需要定義href屬性。當(dāng)然如果通過硬編碼的方式直接將這個(gè)url固定在里面也是可以的,但是這樣的話,對(duì)于以后進(jìn)行代碼的維護(hù),可能就比較麻煩,因此建議使用這種動(dòng)態(tài)的方式來實(shí)現(xiàn),類似于django中reverse一樣。示例代碼如下:

 <li><a href="/">首頁</a></li>
{# 此時(shí)采用動(dòng)態(tài)獲取url的方式,使用url標(biāo)簽可以在DTL模板中動(dòng)態(tài)獲取url,#}
{# 而使用reverse()函數(shù),可以在Django中動(dòng)態(tài)獲取url標(biāo)簽,將視圖函數(shù)進(jìn)行反轉(zhuǎn),得到url. #}
 <li><a href="{% url 'book' %}">讀書</a></li>
 <li><a href="{% url 'movie' %}">電影</a></li>
 <li><a href="{% url 'city' %}">同城</a></li>

2.如果url進(jìn)行反轉(zhuǎn)的時(shí)候,需要傳遞參數(shù),那么就可以在后面?zhèn)鬟f,但是參數(shù)有位置參數(shù)和關(guān)鍵字參數(shù)。位置參數(shù)和關(guān)鍵字參數(shù)不能同時(shí)使用。示例代碼如下:

{# url反轉(zhuǎn),使用位置參數(shù),但是關(guān)鍵字參數(shù)和位置參數(shù)不能同時(shí)使用 #}
 <li><a href="{% url 'detal' 1 %}"></a></li>
 
{# url反轉(zhuǎn),使用關(guān)鍵字參數(shù) #}
{# 接收url中傳遞參數(shù),可以在url中直接傳遞參數(shù),并且指定參數(shù)的值,但是此時(shí)=兩邊不能有空格,否者的話,不能識(shí)別 #}
 <li><a href="{% url 'detail' book_id='3' %}">最火的一篇文章詳情</a></li>

3.如果要在使用url標(biāo)簽反轉(zhuǎn)的時(shí)候要傳遞查詢字符串的參數(shù),那么必須要手動(dòng)在后面添加,示例代碼如下:

{# 在模板中使用查詢字符串的形式添加參數(shù),此時(shí)就只能和reverse()函數(shù)一樣,只能手動(dòng)的添加,使url進(jìn)行拼接。 #}
{# 實(shí)現(xiàn)登錄成功之后跳轉(zhuǎn)到首頁 #}
 <li><a href="{% url 'login' %}?next=/">登錄</a></li>

4.如果要傳遞多個(gè)參數(shù),那么可以通過空格的方式進(jìn)行分割,示例代碼如下:

<li><a href="{% url 'detail' book_id='3' author='小螞蟻' %}">最火的一篇文章詳情</a></li>

以下是完整代碼實(shí)現(xiàn):

views.py代碼如下:

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


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


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


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


# 在進(jìn)行訪問url的時(shí)候進(jìn)行傳遞參數(shù)視圖,直接傳入一個(gè)參數(shù)
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標(biāo)簽前面的圓點(diǎn)去掉 #}
   list-style: none;
   {# 定義li標(biāo)簽之間的外邊距,上下為0,左右為20px #}
   margin: 0 20px;
  }
 </style>
</head>
<body>
<ul class="nav">
 <li><a href="/">首頁</a></li>
{# 此時(shí)采用動(dòng)態(tài)獲取url的方式,使用url標(biāo)簽可以在DTL模板中動(dòng)態(tài)獲取url,#}
{# 而使用reverse()函數(shù),可以在Django中動(dòng)態(tài)獲取url標(biāo)簽,將視圖函數(shù)進(jìn)行反轉(zhuǎn),得到url. #}
 <li><a href="{% url 'book' %}">讀書</a></li>
 <li><a href="{% url 'movie' %}">電影</a></li>
 <li><a href="{% url 'city' %}">同城</a></li>
{# url反轉(zhuǎn),使用位置參數(shù),但是關(guān)鍵字參數(shù)和位置參數(shù)不能同時(shí)使用 #}
{# <li><a href="{% url 'detal' 1 %}"></a></li>#}
{# url反轉(zhuǎn),使用關(guān)鍵字參數(shù) #}
{# 接收url中傳遞參數(shù),可以在url中直接傳遞參數(shù),并且指定參數(shù)的值,但是此時(shí)=兩邊不能有空格,否者的話,不能識(shí)別 #}
 <li><a href="{% url 'detail' book_id='3' author="小螞蟻" %}">最火的一篇文章詳情</a></li>
{# 在模板中使用查詢字符串的形式添加參數(shù),此時(shí)就只能和reverse()函數(shù)一樣,只能手動(dòng)的添加,使url進(jìn)行拼接。 #}
{# 實(shí)現(xiàn)登錄成功之后跳轉(zhuǎn)到首頁 #}
 <li><a href="{% url 'login' %}?next=/">登錄</a></li>
</ul>
</body>
</html>

視圖函數(shù)與url之間的映射:
urls.py代碼如下:

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

]

瀏覽器中查看結(jié)果:

Python中url標(biāo)簽怎么用

Python中url標(biāo)簽怎么用

Python中url標(biāo)簽怎么用

以上是“Python中url標(biāo)簽怎么用”這篇文章的所有內(nèi)容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內(nèi)容對(duì)大家有所幫助,如果還想學(xué)習(xí)更多知識(shí),歡迎關(guān)注億速云行業(yè)資訊頻道!

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場,如果涉及侵權(quán)請(qǐng)聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI