【问题标题】:How to reverse url with optional fields arguments in django?如何在 django 中使用可选字段参数反转 url?
【发布时间】:2011-11-03 15:24:37
【问题描述】:

我有一个带有可选参数的网址:

urlpatterns = patterns(
    'my_app.views',
    url('schedule/(?P<calendar_id>\d+)/(?:month(?P<relative_month>[\+,\-]\d)/)$',
    'attribute_event',name='attribute_event')
)

在我的模板中有一个链接:

{% url attribute_event calendar.id %}

但我有一个错误说不能用这些参数反转 url。我必须使用 2 个 url 正则表达式条目和 url 名称吗?!

【问题讨论】:

    标签: django django-urls


    【解决方案1】:

    只有在你把它分成两个 url 时才有可能:

    urlpatterns = patterns('my_app.views',
        url('schedule/(?P<calendar_id>\d+)/month(?P<relative_month>[\+,\-]\d)/$',
            'attribute_event', name='attribute_event_relative'),
        url('schedule/(?P<calendar_id>\d+)/)$', 
            'attribute_event', name='attribute_event'),
    )    
    

    在模板中:

    {% url attribute_event calendar.id %}
    
    or
    
    {% url attribute_event_relative calendar.id '+1' %}
    

    你的看法:

    def attribute_event(request, calendar_id, relative_month=None):
        pass
    

    【讨论】:

    • 该死的对不起,事实上我的错误在我的正则表达式中,我忘记了“?” as [-2] char...'schedule/(?P&lt;calendar_id&gt;\d+)/(?:month(?P&lt;relative_month&gt;[\+,\-]\d)/)?$' 所以我不需要多个条目。
    • (只要我将模板中的所有参数都设置为无)
    【解决方案2】:

    【讨论】:

      猜你喜欢
      • 2018-03-31
      • 1970-01-01
      • 1970-01-01
      • 2012-12-30
      • 2015-11-17
      • 2021-05-29
      • 2014-07-08
      相关资源
      最近更新 更多