【问题标题】:How can reduce the number of URL rewriting configs in Django如何减少 Django 中 URL 重写配置的数量
【发布时间】:2011-09-24 14:07:16
【问题描述】:

我在 django 中有这个列表。这些看起来相同。有没有办法把这四行做成一行

(r'^book/list/$', list_detail.object_list, book_info),
(r'^author/list/$', list_detail.object_list, author_info),
(r'^publisher/list/$', list_detail.object_list, publisher_info),
(r'^shop/list/$', list_detail.object_list, shop_info),

【问题讨论】:

    标签: django url django-generic-views


    【解决方案1】:

    我宁愿保持原样,这样您就可以清楚地看到您网站的网址(每个列表都可以有一个名称供 {% url %} 使用,但也许您可以执行以下操作:

    (r'^(?P<model>\w+)/list/$', list_detail.object_list)
    

    然后在views.py中:

    def object_list(request, model):
        if model == 'books':
            return books_list(request)
    
    def books_list(request):
        # whatever
    

    我认为你拥有的是最好的。

    【讨论】:

    • +1。如果你想有更少的条目,你只需要有更少的模式。
    【解决方案2】:

    您可以使用由管道符号设计的 OR 字符在正则表达式中组合您的术语。像这样的东西: (r'^(book|author|publisher|shop)/list/$', list_detail.object_list, shop_info),

    我假设您不想使用通配符。

    【讨论】:

    • 但我也有差异功能 shop_info , book_info 。他们是模特
    猜你喜欢
    • 2015-08-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-09-18
    • 1970-01-01
    • 2010-12-13
    • 2020-10-10
    • 1970-01-01
    相关资源
    最近更新 更多