举个例子:
view.py
def view1( request ):
return HttpResponse( "just a test..." )
urls.py
urlpatterns = patterns('',
url( r'^view1$', 'app1.view.view1'),
)
我想获取view1
的网址路径。我怎样才能做到这一点。
我想避免对任何URL路径进行硬编码,例如" xxx / view1"。
答案 0 :(得分:25)
您需要reverse
。
reverse('app1.view.view1')
如果您想查找网址并重定向到该网址,请使用redirect
redirect('app1.view.view1')
如果想要更进一步而不是硬编码您的视图名称,您可以name your URL patterns并使用这些名称。
答案 1 :(得分:11)
这取决于你是否想要它,如果你想在视图中获取url(python代码)你可以使用reverse
函数(documentation):
reverse('admin:app_list', kwargs={'app_label': 'auth'})
如果想在模板中使用它,那么您可以使用url
标记(documentation):
{% url 'path.to.some_view' v1 v2 %}
答案 2 :(得分:3)
如果你想将view1的url放入view1中,那么最好是request.get_path()
答案 3 :(得分:3)
正如其他人所说,reverse
函数和url
模板标签可以(应该)用于此目的。
我建议为您的网址格式添加名称
urlpatterns = patterns('',
url( r'^view1$', 'app1.view.view1', name='view1'),
)
并通过此名称来反转它
reverse('view1')
这将使您的代码更容易重构
答案 4 :(得分:2)
是的,当然你可以获得名为' view1'的网址视图。没有硬编码网址。
您需要做的就是 - 只需导入'反向'来自Django urlresolvers的功能。
请看下面的示例代码:
from django.core.urlresolvers import reverse
from django.http import HttpResponseRedirect
def some_redirect_fun(request):
return HttpResponseRedirect(reverse('view-name'))
答案 5 :(得分:1)
您可以使用reverse功能。您可以分别为url-includes和url指定名称空间和名称,以使重构更容易。
答案 6 :(得分:0)
通用方法
1。生成带有所有具有相应视图功能的URL的文本文件
./manage.py show_urls --format pretty-json --settings=<path-to-settings> > urls.txt
示例
./manage.py show_urls --format pretty-json --settings=settings2.testing > urls.txt
2。在输出文件中查找您的URL urls.txt
{
"url": "/v3/blockdocuments/<pk>/",
"module": "api.views.ganeditor.BlockDocumentViewSet",
"name": "block-documents-detail",
},