1

我有两个网址:

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

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

4

2 回答 2

6

你可以这样做:

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")
于 2013-10-21T17:51:16.037 回答
0

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

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

Django 文档

于 2013-10-23T15:54:49.407 回答