【问题标题】:django urls optimizationdjango url 优化
【发布时间】:2011-11-24 00:00:11
【问题描述】:

带有 2 个请求参数的网址:

/prefix1/1/
/prefix2/2/
/prefix1/1/prefix2/2
/prefix2/2/prefix1/1

url( ur'^prefix1/(?P<p1>\d+)/$', 'app.views.view' ),
url( ur'^prefix2/(?P<p2>\d+)/$', 'app.views.view' ),
url( ur'^prefix1/(?P<p1>\d+)/prefix2/(?P<p2>\d+)/$', 'app.views.view' ),
url( ur'^prefix2/(?P<p2>\d+)/prefix1/(?P<p1>\d+)/$', 'app.views.view' ),

是否可以更“干”地执行此操作(使用 3 个请求参数,urls.py 中的行 = 15)?

【问题讨论】:

标签: django


【解决方案1】:

我整理了一个样本,如果 lazerscience 的评论对你没有帮助,这就是我想出的:

url(r'^(?P<param1>foo|bar)(/(?P<param2>\d+))?(/(?P<param3>\d+))?(/(?P<param4>\d+))?/$', 'demo.views.view'),

我的看法是这样的:

def view(request, *args, **kwargs):
    return render_to_response("index.html",
        { 'dict': [(k, v) for k,v in kwargs.iteritems()] },
        context_instance=RequestContext(request))

它在您添加到 url 时逐步添加参数,从左到右,正如您所期望的那样。

【讨论】:

  • 不完全是我需要的,你忘了prefix,见stackoverflow.com/questions/5399035/…
  • 不,我没有。我假设你知道的足够多,能够从上面的 foo|bar 示例表达式中推导出一个等效的前缀。
猜你喜欢
  • 1970-01-01
  • 2021-03-02
  • 2020-04-25
  • 2011-10-08
  • 2017-05-12
  • 2012-03-19
  • 2011-05-16
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多