Django-URL命名空间

时间:2015-09-19 09:25:03

标签: python django web django-urls

有人可以向我解释Django中URL命名空间的概念。我确实找到了类似的问题(Anyone knows good Django URL namespaces tutorial?),但我还是不了解它。

1 个答案:

答案 0 :(得分:2)

想象一下,您的项目中有三个应用程序:

  • 评论
  • 产品
  • 用户

对于每个应用,您在views.py中都有一个名为DetailView的视图。

class DetailView(generics.RetrieveUpdateDestroyAPIView):
    # Some logic here.

要调用该视图,您的urls.py中有一个名为detail的网址。这可能会让人感到困惑!

url(r'^(?P<pk>\d+)$', views.DetailView.as_view(), name='detail')

要区分这些网址(例如,在使用{% url ... %}的模板中),您可以使用命名空间。

url(r'^api/v1/reviews/', include(reviews_urls, namespace="reviews"))

当您为网址命名空间时,您可以在模板中引用它们或重定向为reviews:detail,这可以简化您的生活并使代码更具可重用性。

def my_view(request):
    ...
    return redirect('reviews:detail', foo='bar')