最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Django框架視圖層URL映射與反向解析實例分析

 更新時間:2019年07月29日 11:40:32   作者:我是豬行不  
這篇文章主要介紹了Django框架視圖層URL映射與反向解析,結(jié)合實例形式分析了Django框架普通url映射、命名URL參數(shù)映射、分布式URL映射、反向解析等相關(guān)操作技巧,需要的朋友可以參考下

本文實例講述了Django框架視圖層URL映射與反向解析。分享給大家供大家參考,具體如下:

Django視圖層主要工作就是銜接HTTP請求、python程序、HTML模板。

URL分發(fā)(URL dispatcher)映射配置可以被看作Django項目的入口配置(項目下的urls.py以及應(yīng)用的下的urls.py,include將兩者聯(lián)系起來在項目下的urls.py),通過URLdispatcher可以指定用戶的每一個訪問的后臺的python處理函數(shù)是什么。

1.普通url映射

每一個Django都有一個urls.py來維護URL dispatcher,如下所示:

from django.conf.urls import url
from . import views #導(dǎo)入視圖處理函數(shù)
urlpatterns = [
  url(r'^year/2015/$', views.moments_2015),
  url(r'^year/([0-9]{4}$)', views.years_moments),
  url(r'^month/([0-9]{4})/([0-9]{2}$)', views.month_moments),
  url(r'month/([0-9]{4})/([0-9]{2})/([0-9]+)$', views.test),
]

該文件通過維護urlpatterns列表的元素完成URL映射,每個元素都是django.conf.urls.url的一個實例,url的第一個參數(shù)是HTPP路徑,第二個是相應(yīng)的python函數(shù)名。

URL路徑用正則表達式表達,'^'起始符,'$'結(jié)束符,第一個路徑是嚴(yán)格路徑,只匹配'year/2015',調(diào)用是的views中moment_2015(request)函數(shù),request是用戶請求對象!

第二個路徑匹配的事任何'year/xxxx'路徑,其中xxxx代表是四個數(shù)字,調(diào)用views的year_moment(request,xxxx),并且會把四個數(shù)字當(dāng)成變量傳給該函數(shù)

第三個第四個與第二個類似,只不過后續(xù)添加了更多路徑變量調(diào)用函數(shù)分別為month_moments(request, xxxx, yy)和test(request,xxxx, yy, zz)

2.命名URL參數(shù)映射

命名URL參數(shù)映射使得開發(fā)者可以定義這些被傳遞參數(shù)的參數(shù)名稱,方式為"?P<name>pattern",如下所示:

from django.conf.urls import url
from . import views
urlpatterns = [
  url(r'^year/2015/$', views.moments_2015),
  url(r'^year/?P<year>([0-9]{4}$)', views.years_moments),
  url(r'^month/?P<year>([0-9]{4})/?P<month>([0-9]{2}$)', views.month_moments),
]

當(dāng)多個URL映射定義可以匹配同一個URL訪問,django會選取列表的第一個元素?。。。。。。。。。?/p>

后兩個url使用命名參數(shù)進行定義,調(diào)用函數(shù)如下:

year_moments(request,year=xxxx)和month_moments(request,year=xxxx,month=xx)!

3.分布式URL映射

在django項目中,可能包含多個應(yīng)用,每個app都有自己urls.py,如果將所有的url映射都放在一個urls.py文件不利于維護。Django通過include()函數(shù)提供了分布式URL映射功能。

在項目根映射文件urls.py引用其他應(yīng)用的映射文件:

from django.conf.urls import url, include
urlpatterns = [
  url(r'^moments/', include('djangosite.app.urls')),
  url(r'^admin/', include('djangosite.admin.urls')),
]

以moment/開頭的URL被轉(zhuǎn)接到djangosite.app.urls.py文件

以admin/開頭的URL被轉(zhuǎn)接到djangosite.admin.urls.py文件

其中子映射文件app/urls.py:

from django.conf.urls import url, include
from . import views
urlpatterns = [
  url(r'^year/?P<year>([0-9]{4})/$', views.year_moments),
  url(r'^admin/', include('djangosite.admin.urls')),
]

解析URL:

第一個對http://xxxxxxxxx/moments/year/2013的訪問會定位到app/views.py的year_moments函數(shù)

第二個元素對http://xxxxxx/moments/admin的訪問會轉(zhuǎn)接到djangosite.admin.urls.py文件進行解析

4.反向解析

django的反向解析共那個在模板文件和python視圖函數(shù) :

在模板文件中用{%url%}標(biāo)簽調(diào)用反向解析;

在python視圖函數(shù)中用django.urls.reverse()函數(shù)。

from django.conf.urls import url, include
urlpatterns = [
  url(r'^year/2015/$', views.year_moments, name="moments_2015"),
]

定義一個URL映射,通過name參數(shù)將該映射命名為moments_2015.在需要獲取該URL的模板文件中{%url%}標(biāo)簽來進行聲明:

<a href="{% url 'moments_2015'%}" rel="external nofollow" >
查看2015消息
</a>

上面用'moments_2015'映射名作為反向解析的參數(shù),解析結(jié)果為:

<a href="/year/2015/" rel="external nofollow" rel="external nofollow" >
查看2015消息
</a>

在視圖函數(shù)中調(diào)用方式是reverse函數(shù)。如下所示:

#views.py
from django.urls import reverse
from django.http import HTTPResponseRedirect
def redirect_to_year_2015(request):
  return HTTPResponseRedirect(reverse('moments_2015'))

5.反向解析帶參數(shù)

模板文件如下所示:

from django.conf.urls import url, include
urlpatterns = [
  url(r'^year/?P<year>([0-9]{4})/$', views.year_moments, name="moments"),
]

模板文件通過{%url%}標(biāo)簽調(diào)用反向解析:

<a href="{% url 'moments', 2015%}" rel="external nofollow" >
查看2015消息
</a>

上面用'moments_2015'映射名作為反向解析的參數(shù),解析結(jié)果為:

<a href="/year/2015/" rel="external nofollow" rel="external nofollow" >
查看2015消息
</a>

python視圖函數(shù)調(diào)用reverse進行反向解析:

#views.py
from django.urls import reverse
from django.http import HTTPResponseRedirect
def redirect_to_year_2015(request):
  return HTTPResponseRedirect(reverse('moments', args=(2014,)))

args參數(shù)可以攜帶參數(shù)反向解析!

希望本文所述對大家基于Django框架的Python程序設(shè)計有所幫助。

相關(guān)文章

  • python docx 中文字體設(shè)置的操作方法

    python docx 中文字體設(shè)置的操作方法

    今天小編就為大家分享一篇python docx 中文字體設(shè)置的操作方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2018-05-05
  • python多線程對多核cpu的利用解析

    python多線程對多核cpu的利用解析

    這篇文章主要為大家介紹了python多線程對多核cpu的利用解析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2022-07-07
  • Python中uuid模塊的應(yīng)用實例詳解

    Python中uuid模塊的應(yīng)用實例詳解

    這篇文章主要介紹了Python中uuid模塊應(yīng)用的相關(guān)資料,該模塊提供了多種方法生成UUID,包括uuid1()、uuid3()、uuid4()和uuid5(),并解釋了UUID的格式,UUID在數(shù)據(jù)庫、分布式系統(tǒng)和網(wǎng)絡(luò)協(xié)議中廣泛應(yīng)用,是處理唯一標(biāo)識符的有力工具,需要的朋友可以參考下
    2024-11-11
  • python正則表達式及使用正則表達式的例子

    python正則表達式及使用正則表達式的例子

    正則表達是用來匹配字符串,這篇文章給大家介紹了python正則表達式及正則表達式的例子,文章給大家提到了正則表達式語法規(guī)則,感興趣的朋友一起看看吧
    2018-01-01
  • 如何使用Python對NetCDF數(shù)據(jù)做空間相關(guān)分析

    如何使用Python對NetCDF數(shù)據(jù)做空間相關(guān)分析

    這篇文章主要介紹了如何使用Python對NetCDF數(shù)據(jù)做空間相關(guān)分析,幫助大家更好的理解和學(xué)習(xí)使用python,感興趣的朋友可以了解下
    2021-04-04
  • Opencv圖像處理:如何判斷圖片里某個顏色值占的比例

    Opencv圖像處理:如何判斷圖片里某個顏色值占的比例

    這篇文章主要介紹了Opencv圖像處理:如何判斷圖片里某個顏色值占的比例,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-06-06
  • jupyter 導(dǎo)入csv文件方式

    jupyter 導(dǎo)入csv文件方式

    這篇文章主要介紹了jupyter 導(dǎo)入csv文件方式,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-04-04
  • python通過BF算法實現(xiàn)關(guān)鍵詞匹配的方法

    python通過BF算法實現(xiàn)關(guān)鍵詞匹配的方法

    這篇文章主要介紹了python通過BF算法實現(xiàn)關(guān)鍵詞匹配的方法,實例分析了BF算法的原理與Python實現(xiàn)技巧,具有一定參考借鑒價值,需要的朋友可以參考下
    2015-03-03
  • Python中的?pass?占位語句

    Python中的?pass?占位語句

    這篇文章主要介紹了Python中的?pass?占位語句,Python?pass是空語句,是為了保持程序結(jié)構(gòu)的完整性,下文具體的相關(guān)內(nèi)容介紹需要的小伙伴可以參考一下
    2022-04-04
  • Python中%是什么意思?python中百分號如何使用?

    Python中%是什么意思?python中百分號如何使用?

    最近在學(xué)習(xí)python過程中,發(fā)現(xiàn)了%的一些情況,這里就簡單介紹一下,,需要的朋友可以參考下
    2018-03-03

最新評論

阿勒泰市| 白水县| 鹤山市| 鄂托克旗| 丁青县| 孟津县| 平武县| 五原县| 手游| 交城县| 襄汾县| 大荔县| 柳江县| 卓尼县| 肃北| 房产| 德格县| 广元市| 延寿县| 寿宁县| 县级市| 漳州市| 南康市| 玉林市| 故城县| 吉安市| 陆川县| 南丹县| 金阳县| 乌什县| 高州市| 新竹市| 汝阳县| 温泉县| 泽库县| 水城县| 瓮安县| 黄石市| 井陉县| 搜索| 廉江市|