如何在django中获取视图函数的url路径

tru*_*com 16 python django

举个例子:

view.py

def view1( request ):
    return HttpResponse( "just a test..." )
Run Code Online (Sandbox Code Playgroud)

urls.py

urlpatterns = patterns('',
    url( r'^view1$', 'app1.view.view1'),
)
Run Code Online (Sandbox Code Playgroud)

我想获得的URL路径view1.我怎样才能做到这一点.我想避免硬编码任何URL路径,例如"xxx/view1".

DrT*_*rsa 26

你需要reverse.

reverse('app1.view.view1')
Run Code Online (Sandbox Code Playgroud)

如果您想找到URL并重定向到它,请使用 redirect

redirect('app1.view.view1')
Run Code Online (Sandbox Code Playgroud)

如果想要更进一步而不是硬编码您的视图名称,您可以命名您的URL模式并使用这些名称.


San*_*dri 12

这取决于你是否想要它,如果你想在视图中获取url(python代码)你可以使用该reverse函数(文档):

reverse('admin:app_list', kwargs={'app_label': 'auth'})
Run Code Online (Sandbox Code Playgroud)

如果想在模板中使用它,那么您可以使用url标记(文档):

{% url 'path.to.some_view' v1 v2 %}
Run Code Online (Sandbox Code Playgroud)


Goi*_*oin 5

如果你想把 view1 的 url 放到 view1 中,最好是 request.get_path()

  • 这实际上是不正确的(认为它可能是在早期版本中)。要从请求对象获取路径,从 django 1.11+ 开始,您可以使用 `request.path` 或 `request.get_full_path()` (2认同)