我正在为网站构建urlconf但我面临一些问题;
在某些时候,我必须提供一个最终可以重新排序的任务列表。问题是我不知道如何配置正则表达式。
到目前为止,我已经得到了这个:
url(r'^myapp/mytasks, myview.tasks),
默认行为是接受www.mydomain.com/myapp/mytasks
的请求。
但是,如果用户按下订单按钮,我需要Django也接受类型的请求:
www.mydomain.com/myapp/mytasks/sort_by/price_highest
www.mydomain.com/myapp/mytasks/sort_by/price_lowest
但不是
www.mydomain.com/myapp/mytasks/price_lowest
这种情况是否有正则表达式?
提前谢谢大家。
P.S 理想情况下,我也想知道如何扭转它们。
答案 0 :(得分:1)
为同一视图创建两个url
条记录:
url(r'^myapp/mytasks/$', myview.tasks, name='tasks'),
url(r'^myapp/mytasks/sort_by/(price_highest|price_lowest)/$', myview.tasks,
name='sorted_tasks'),
然后将tasks()
视图的签名更改为:
def tasks(request, sort_by=None):
...
在模板中,您可以轻松指向两个版本:
{% url 'tasks' %}
{% url 'sorted_tasks' 'price_highest' %}
更新:如果您确实想要制作唯一的url
条记录,那么正则表达式将是:
'^myapp/mytasks/(?:sort_by/(price_highest|price_lowest)/)?$'
但我不确定它是否适用于{% url %}
代码。