脫鉤的URL文件到我們的應用程序後,我們所面臨的問題:Django的url處理?
例子:
http://www.oursite.com/ourprefix/xyz/wsz
- 如何處理的URL模板(以適應在URL任何前綴(ourprefix))
- 如何做HttpResponseRedirect沒有硬編碼的網址(這裏也有前綴問題)
脫鉤的URL文件到我們的應用程序後,我們所面臨的問題:Django的url處理?
例子:
http://www.oursite.com/ourprefix/xyz/wsz
如果我理解你是正確的,你想解析一個特定的視圖到模板中的URL?
您應該在Django中使用url-reverse方法。見here。
1)爲模板,你可以使用:
<a href="/path/to/{{prefix}}/xyz"> Link </a>
當「前綴」是在上下文中設置的變量,你傳遞給模板。您還可以動態地選擇正確的網址:
{% url application.views.viewfunc parameter1 parameter2 %}
詳情請參閱here。
2)因此,要HttpResponseRedirect,你可以這樣做:
HttpResponseRedirect(reverse(your_view_function))
它也接受參數。
我是否必須自行放置{{prefix}},或者有些系統會爲我執行此操作?是應用程序以某種方式自動神奇地意識到該前綴。 – user505160 2011-05-24 13:51:33
你不會說這個前綴是如何提供的,但假設你剛剛通過設置WSGI別名來完成它,那麼Django自動知道它。 – 2011-05-24 14:04:39
使用named urls在urls.py
。
{% url name %}
模板標籤。它會插入正確的路徑。reverse('name', **kwargs)
作爲重定向。一個例子:
在凸出/ urls.py:
patterns = patterns('',
(r'^prefix/', include('proj.app.urls')),
)
在凸出/應用/ urls.py:
patterns = patterns('',
url(r'object/^(?P<pk>\d+)/edit/', edit_object_view, name="edit"),
)
在凸出/應用/視圖
。 py:
return HttpResponseRedirect(reverse('app:edit', {'pk':pk}))
in proj/app/templates/app/my_template.py:
<a href="{% url app:edit pk=pk %}"> <!-- generates /prefix/object/123/edit/ -->
你是什麼意思的「處理」模板中的網址?只要把它們放在錨的href屬性中... – 2011-05-24 13:26:12
你能更具體一些嗎?你與前綴有什麼關係?這應該只是一個簡單的正則表達式在urls.py – silent1mezzo 2011-05-24 13:28:29
你可以在你的問題更具體嗎?好像你在你的網址中添加了語言前綴。 – dzen 2011-05-24 13:37:00