我有两个网址:
url(r'^(?P<slug>[^\.]+)/reviews/$', Someview.as_view(), name="someview"),
url(r'^(?P<slug>[^\.]+)/tips/$', Someview.as_view(), name="someview")
我需要在视图中获得reviews
或tips
部分,以根据网址的那一部分在同一视图中应用不同的逻辑,我该怎么做?
答案 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")