我有两个网址:
url(r'^(?P<slug>[^\.]+)/reviews/$', Someview.as_view(), name="someview"),
url(r'^(?P<slug>[^\.]+)/tips/$', Someview.as_view(), name="someview")
我需要在视图中获取一个reviews
或tips
部分以根据 url 的该部分在同一视图中应用不同的逻辑,我该怎么做?
我有两个网址:
url(r'^(?P<slug>[^\.]+)/reviews/$', Someview.as_view(), name="someview"),
url(r'^(?P<slug>[^\.]+)/tips/$', Someview.as_view(), name="someview")
我需要在视图中获取一个reviews
或tips
部分以根据 url 的该部分在同一视图中应用不同的逻辑,我该怎么做?
你可以这样做:
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 中传递字典来获取更多变量。
url(r'^(?P<slug>[^\.]+)/reviews/$', Someview.as_view(), {'reviews':'reviews','tips':'tips'}, name="someview")
如果您需要传递更多变量,可能与 url 中的术语无关,您可以将 kwargs 字典传递给函数。
url(r'^(?P<slug>[^\.]+)/reviews/$',
Someview.as_view(),
{'reviews':'reviews', 'tips':False, 'foo':'bar'},
name="someview")