1. 程式人生 > >Django之反向生成url

Django之反向生成url

pattern archive class view response lai alt urls.py文件 request

說明:

  通過反向生成,可以實現通過models中的表名、app名等靈活生成相應的url路徑。

首先介紹一下Django的url

1.django項目文件中的settings.py中

1 ROOT_URLCONF = CRM_project.urls

設置了瀏覽器訪問該項目都將從CRM_project目錄下的urls文件中定制的url路徑訪問。

2.Django默認設置的url在項目CRM_project目錄下的urls.py文件中。

from django.conf.urls import url,include
from django.contrib import admin

urlpatterns 
= [ url(r^admin/, admin.site.urls), ]

這個url路由的意義就是,通過正則匹配用戶瀏覽器訪問的url地址,然後對應一個view視圖函數,

發給視圖函數一個request,視圖函數會返回一個response給瀏覽器。

1 urlpatterns = [
2 url(r^articles/([0-9]{4})/([0-9]{2})/$, views.month_archive),
3 url(r^articles/([0-9]{4})/([0-9]{2})/([0-9]+)/$, views.article_detail),
4 url(r^articles/(?P<year>[0-9]{4})/(?P<month>[0-9]{2})/$
, views.month_archive), 5 url(r^articles/(?P<year>[0-9]{4})/(?P<month>[0-9]{2})/(?P<day>[0-9]{2})/$, views.article_detail), 6 7 ]
可以使用命名的正則表達式組來捕獲URL 中的值並以關鍵字 參數傳遞給視圖。 通過圓括號可以進行位置傳參,通過有名分組的方式可以進行關鍵字傳參。 在Python 正則表達式中,命名正則表達式組的語法是(?P<name>pattern),其中name 是組的名稱,pattern 是要匹配的模式。
1
# urls.py 2 # 替換index的url 3 url(r^$, views.index, {string: Hello World!}) 4 5 # views.py 6 def index(request, string): 7 return HttpResponse(string, text/plain)

可以通過在路由表中寫一個字典來給視圖函數傳參。

ps:

application/xml 、 text/xml、text/html、text/plain的區別

1、text/html是html格式的正文

2、text/plain是無格式正文

3、text/xml忽略xml頭所指定編碼格式而默認采用us-ascii編碼

4、application/xml會根據xml頭指定的編碼格式來編碼。

Url的命名空間

Django之反向生成url