日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

Django 路由

發(fā)布時(shí)間:2023/12/13 编程问答 47 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Django 路由 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

定義:

  URL配置(URLconf)就像Django 所支撐網(wǎng)站的目錄。它的本質(zhì)是URL與要為該URL調(diào)用的視圖函數(shù)之間的映射表;你就是以這種方式告訴Django,對(duì)于這個(gè)URL調(diào)用這段代碼,對(duì)于那個(gè)URL調(diào)用那段代碼。

URL配置格式:

'''urlpatterns = [url(正則表達(dá)式, views視圖函數(shù),參數(shù),別名), ]參數(shù)說(shuō)明:一個(gè)正則表達(dá)式字符串一個(gè)可調(diào)用對(duì)象,通常為一個(gè)視圖函數(shù)或一個(gè)指定視圖函數(shù)路徑的字符串可選的要傳遞給視圖函數(shù)的默認(rèn)參數(shù)(字典形式)一個(gè)可選的name參數(shù)'''

URL配置的幾種方式:

1、基本配置

url(r'^index$', views.index),

2、基于正則的路由

url(r'^index/(\d*)', views.index), url(r'^manage/(?P<name>\w*)/(?P<id>\d*)', views.manage),

這時(shí)在view中的相對(duì)應(yīng)的方法就必須接受正則分組中的id

3、添加額外的參數(shù)

url(r'^manage/(?P<name>\w*)', views.manage,{'id':333}),

這時(shí)會(huì)在views里的方法調(diào)用中額外傳遞一個(gè)默認(rèn)的參數(shù),而且必須得接收

4、為路由映射設(shè)置名稱

url(r'^home', views.home, name='h1'), url(r'^index/(\d*)', views.index, name='h2'),

設(shè)置名稱之后,可以在不同的地方調(diào)用,如:

  • 模板中使用生成URL ? ? {% url 'h2' 2012 %}
  • 函數(shù)中使用生成URL ? ??reverse('h2', args=(2012,)) ? ? ?路徑:django.urls.reverse
  • Model中使用獲取URL ?自定義get_absolute_url() 方法

5、根據(jù)app對(duì)路由規(guī)則進(jìn)行分類(lèi)

url(r'^web/',include('web.urls')),

?URL反向解析:

一、原因:

在使用Django 項(xiàng)目時(shí),一個(gè)常見(jiàn)的需求是獲得URL 的最終形式,以用于嵌入到生成的內(nèi)容中(視圖中和顯示給用戶的URL等)或者用于處理服務(wù)器端的導(dǎo)航(重定向等)。

人們強(qiáng)烈希望不要硬編碼這些URL(費(fèi)力、不可擴(kuò)展且容易產(chǎn)生錯(cuò)誤)或者設(shè)計(jì)一種與URLconf 毫不相關(guān)的專門(mén)的URL 生成機(jī)制,因?yàn)檫@樣容易導(dǎo)致一定程度上產(chǎn)生過(guò)期的URL。

換句話講,需要的是一個(gè)DRY 機(jī)制。除了其它有點(diǎn),它還允許設(shè)計(jì)的URL 可以自動(dòng)更新而不用遍歷項(xiàng)目的源代碼來(lái)搜索并替換過(guò)期的URL。

獲取一個(gè)URL 最開(kāi)始想到的信息是處理它視圖的標(biāo)識(shí)(例如名字),查找正確的URL 的其它必要的信息有視圖參數(shù)的類(lèi)型(位置參數(shù)、關(guān)鍵字參數(shù))和值。

Django 提供一個(gè)辦法是讓URL 映射是URL 設(shè)計(jì)唯一的地方。你填充你的URLconf,然后可以雙向使用它:

  • 根據(jù)用戶/瀏覽器發(fā)起的URL 請(qǐng)求,它調(diào)用正確的Django 視圖,并從URL 中提取它的參數(shù)需要的值。
  • 根據(jù)Django 視圖的標(biāo)識(shí)和將要傳遞給它的參數(shù)的值,獲取與之關(guān)聯(lián)的URL。

第一種方式是我們?cè)谇懊娴恼鹿?jié)中一直討論的用法。第二種方式叫做反向解析URL、反向URL 匹配、反向URL 查詢或者簡(jiǎn)單的URL 反查。

在需要URL 的地方,對(duì)于不同層級(jí),Django 提供不同的工具用于URL 反查:

  • 在模板中:使用url 模板標(biāo)簽。
  • 在Python 代碼中:使用django.core.urlresolvers.reverse()?函數(shù)。
  • 在更高層的與處理Django 模型實(shí)例相關(guān)的代碼中:使用get_absolute_url()?方法。

二、方式:

1、先配置URL

from django.conf.urls import urlfrom . import viewsurlpatterns = [#...url(r'^articles/([0-9]{4})/$', views.year_archive, name='news-year-archive'),#... ]

2、在模版中使用URL反向生成

<a href="{% url 'news-year-archive' 2012 %}">2012 Archive</a><ul> {% for yearvar in year_list %} <li><a href="{% url 'news-year-archive' yearvar %}">{{ yearvar }} Archive</a></li> {% endfor %} </ul>

3、在py中使用

from django.core.urlresolvers import reverse from django.http import HttpResponseRedirectdef redirect_to_year(request):# ...year = 2006# ...return HttpResponseRedirect(reverse('news-year-archive', args=(year,)))

其他:

url(r'^app01/', include('app01.urls', 'app01', 'app01')),# app01.urls url(r'^index/(?P<name>\w+)/$', views.index, name='index'),# url(r'^app01/', ([ # url(r'^index/(?P<name>\w+)/$', views.index, name='index'), # ], 'app01', 'app01')),

from django.shortcuts import HttpResponse from django.urls import reverse
def index(request, name):print(reverse('app01:index', kwargs={'name': name}))return HttpResponse('ok')

?

轉(zhuǎn)載于:https://www.cnblogs.com/liuxiaowei/p/7812841.html

總結(jié)

以上是生活随笔為你收集整理的Django 路由的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。