如何在Django视图中获取url的一部分?

时间:2013-10-21 17:43:15

标签: django django-templates django-views django-urls

我有两个网址:

url(r'^(?P<slug>[^\.]+)/reviews/$', Someview.as_view(), name="someview"),
url(r'^(?P<slug>[^\.]+)/tips/$', Someview.as_view(), name="someview")

我需要在视图中获得reviewstips部分,以根据网址的那一部分在同一视图中应用不同的逻辑,我该怎么做?

2 个答案:

答案 0 :(得分:5)

你可以这样做:

url(r'^(?P<slug>[^\.]+)/(?P<reviews>reviews)/$', Someview.as_view(), name="someview"),
url(r'^(?P<slug>[^\.]+)/(?P<tips>tips)/$', Someview.as_view(), name="someview")

在视图中,你可以得到它们:

基于类的视图:

class SomeView(ListView):

      def my_fn(self):
          reviews = self.kwargs.get('reviews', None):
          ...

基于功能的视图:

def SomeView(request, reviews):
    #you can use it in the view now
    revews = reviews
    ...

您可以通过在网址中传递字典来获取更多变量。

url(r'^(?P<slug>[^\.]+)/reviews/$', Someview.as_view(), {'reviews':'reviews','tips':'tips'}, name="someview")

答案 1 :(得分:0)

如果你需要传递更多变量,可能与url中的术语无关,你可以将kwargs字典传递给函数。

url(r'^(?P<slug>[^\.]+)/reviews/$',
    Someview.as_view(),
    {'reviews':'reviews', 'tips':False, 'foo':'bar'},
    name="someview")

Django docs