[英]How to get the url path of a view function in django
举个例子:
查看.py
def view1( request ):
return HttpResponse( "just a test..." )
网址.py
urlpatterns = patterns('',
url( r'^view1$', 'app1.view.view1'),
)
我想获取view1
的 URL 路径。 我怎样才能做到这一点。 我想避免硬编码任何 URL 路径,例如“xxx/view1”。
你需要reverse
。
from django.urls import reverse
reverse('app1.view.view1')
如果要查找 URL 并重定向到它,请使用redirect
from django.urls import redirect
redirect('app1.view.view1')
如果想更进一步,也不想硬编码您的视图名称,您可以命名您的 URL 模式并使用这些名称。
如果你想把 view1 的 url 放到 view1 中,最好是 request.get_path()
正如其他人所说,可以(应该)为此使用reverse
函数和url
模板url
。
我建议在您的网址模式中添加一个名称
urlpatterns = patterns('',
url( r'^view1$', 'app1.view.view1', name='view1'),
)
并通过这个名字扭转它
reverse('view1')
这将使您的代码更容易重构
是的,当然您可以获取名为“view1”的视图的 url 路径,而无需对 url 进行硬编码。
您需要做的就是 - 只需从 Django urlresolvers 导入“反向”函数。
看看下面的示例代码:
from django.core.urlresolvers import reverse
from django.http import HttpResponseRedirect
def some_redirect_fun(request):
return HttpResponseRedirect(reverse('view-name'))
您可以为此使用反向功能。 您可以分别为 url-includes 和 urls 指定命名空间和名称,以使重构更容易。
通用方法
安装Django 扩展并将其添加到 INSTALLED_APPS
用对应的视图函数生成一个包含所有 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
urls.txt
查找您的 URL {
"url": "/v3/blockdocuments/<pk>/",
"module": "api.views.ganeditor.BlockDocumentViewSet",
"name": "block-documents-detail",
},
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.