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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

Django url() 函数详解

發布時間:2023/12/14 编程问答 34 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Django url() 函数详解 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

url()函數看起來的格式象: url(r^/account/$’, views.index, name=index) ,它可以接收四個參數,分別是兩個必選參數: regex 、 view 和兩個可選參數: kwargs 、 name ,接下來詳細介紹這四個參數。

regex

regex代表一個正則表達式,凡是與regex匹配的URL請求都會執行到url()函數中對應的第二個參數 view 代表的視圖函數中。需要注意的是:正則表達式不會匹配URL中的域名和查詢參數,如:http://www.foofish.net/article/?page=3, Django只找 article/ 。正則表達式在URLconf模塊加載時就編譯好了,所以在匹配的時候速度是很快的。

view

Django匹配正則表達式成功后,就會找到相應的視圖函數,Django始終用HttpRequest對象作為第一個參數傳遞給視圖函數,此外使用regex參數中攜帶的參數作為可選參數傳遞給視圖函數。如: url(r’^(?P\d+)/,views.detail,name=detail),(?P<articleid>\d+)detail(request,articleid)urlurl(r(\d+)/’, views.detail, name=’detail’) ,這樣在視圖函數里,第二個參數的名稱就隨便命名了。它根據位置參數的位置來匹配。

name

講name之前,先說說Django template的內建標簽url, {% url path.to.some_view%} 可以返回視圖函數對應的URL(相對域名的絕對路徑),比如 url(r^/account/$’, views.index, name=index) ,使用 {% url view.index %} 將返回 /accout/ ,這樣做可以提高模版的靈活性,如果是使用硬編碼的方式,模版難以維護。

使用標簽url的時候可能會遇到一個問題就是:對于:

urlpatterns = patterns('', url(r'^archive/(\d{4})/$', archive, name="full-archive"), url(r'^archive-summary/(\d{4})/$', archive, {'summary': True}, "arch-summary"), )

同一個視圖函數有多個urlconf,此時模版系統想通過視圖名 archive 獲取URL時,就不知所措了,name參數就是用來解決此問題的。name用來唯一區一個視圖對應多個urlconf的場景。通過name來反向獲取URL。

如:

urlpatterns = patterns('', url(r'^archive/(\d{4})/$', archive, name="full-archive"), url(r'^archive-summary/(\d{4})/$', archive, {'summary': True}, "arch-summary"), )

在模版中可以使用:

{% url arch-summary 1945 %} {% url full-archive 2007 %}

kwargs

kwargs就是一個字典類型的參數,它的使用方式如:

url(r'^archive-summary/(\d{4})/$', archive, {'summary': True}, "arch-summary"),

這里的kwargs 就是 {‘summary’: True}

視圖函數中就是這樣使用:

def archive(request, archive_id, summary):
注意:
如果在url.py 中有 url(r'^comment/(\d{1,9})/delete/$','delete_comment'), 的配置,如果不存在 delete_comment 這樣一個函數視圖,如果在模版中使用了 {% url path.to.some_view %} 這個標簽,那么拋出 ViewDoesNotExit錯誤。仔細想想很有道理,如果視圖不存在,即使匹配到了URL,當訪問這個URL的時候,還是會拋ViewDoesNotExit的異常,這里Django只是在加載解析URLConf的時候就做了檢查。
如果在根url.py文件中使用了 url(r’^people/’, include(‘people.urls’, namespace=’people’)) ,這里people是一個app,那么在people這個app中的url.py中 url(r’^(\d{1,9})/$’,’index’, name=’index’) 必須指定了name=index才能正常使用{% url ‘people:index’%},否則:

NoReverseMatch at /
Reverse for ‘subjects’ with arguments ‘()’ and keyword arguments ‘{}’ not found
當然如果你確定不是上述問題拋出的此異常,那么可以看下這兩個答案:

http://stackoverflow.com/questions/9649587/reverse-for-with-arguments-and-keyword-arguments-not-found

http://stackoverflow.com/questions/14882491/django-release-1-5-url-requires-a-non-empty-first-argument-the-syntax-change

本文參考

https://docs.djangoproject.com/en/1.1/topics/http/urls/#id2

https://docs.djangoproject.com/en/1.1/ref/templates/builtins/#std:templatetag-url

Django1.8返回json字符串和接收post的json字符串內容 http://www.linuxidc.com/Linux/2015-07/120226.htm

如何使用 Docker 組件開發 Django 項目? http://www.codesec.net/Linux/2015-07/119961.htm

Ubuntu Server 12.04 安裝Nginx+uWSGI+Django環境 http://www.codesec.net/Linux/2012-05/60639.htm

Django+Nginx+uWSGI 部署 http://www.codesec.net/Linux/2013-02/79862.htm

Django實戰教程 http://www.codesec.net/Linux/2013-09/90277.htm

Django python mysql Linux 開發環境搭建 http://www.codesec.net/Linux/2013-09/90638.htm

Django 的詳細介紹 :請點這里

Django 的下載地址 :請點這里

本文地址 : http://www.codesec.net/Linux/2015-08/121376.htm

本文開發(python)相關術語:python基礎教程 python多線程 web開發工程師 軟件開發工程師 軟件開發流程

總結

以上是生活随笔為你收集整理的Django url() 函数详解的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。