【问题标题】:How to get a part of url in Django view?如何在 Django 视图中获取部分 url?
【发布时间】:2013-10-30 08:10:15
【问题描述】:

我有两个网址:

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

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

【问题讨论】:

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


    【解决方案1】:

    你可以这样做:

    url(r'^(?P&lt;slug&gt;[^\.]+)/(?P&lt;reviews&gt;reviews)/$', Someview.as_view(), name="someview"),
    url(r'^(?P&lt;slug&gt;[^\.]+)/(?P&lt;tips&gt;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(r'^(?P&lt;slug&gt;[^\.]+)/(?P&lt;type&gt;(reviews|tips))/$ 就足够了。
    • 哇,非常感谢 Alex,感谢 karthikr 的改进版本!
    【解决方案2】:

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

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

    Django docs

    【讨论】:

      猜你喜欢
      • 2021-02-04
      • 2013-03-23
      • 1970-01-01
      • 1970-01-01
      • 2012-07-22
      • 1970-01-01
      • 2021-01-26
      • 1970-01-01
      • 2022-12-23
      相关资源
      最近更新 更多