为两个参数设置Django网址格式的最佳方法是什么,这两个参数都是可选的?

时间:2010-04-05 03:03:10

标签: django

我正在设计一个用于查看车辆图片的图库应用程序,有两个参数:

  1. 制造商
  2. 车辆类型
  3. 现在您可以查看,但不能同时查看两者。网址是这样的:

    1. /制造商/#
    2. /类型/#
    3. 其中#是ID号。我如何/可以格式化我的网址,以便它可以同时接受?我目前的解决方案是:/ both /#/#但这需要一些重组,因为应用程序不知道你想要何时同时进行过滤。任何见解都将不胜感激。

2 个答案:

答案 0 :(得分:2)

如果您处于两者都是可选的情况,也许您最好的办法是通过GET参数处理它。

答案 1 :(得分:0)

可能该方案适合您:

views.py:

def filtered_view (request, manufacturer_id=None, type_id=None):
    ...

urls.py:

    ...
    url(r'^manufacturer/(?P<manufacturer_id>[0-9]+)/((?P<type_id>[0-9])/)?$', filtered_view),
    url(r'^type/(?P<type_id>[0-9]+)/((?P<manufacturer_id>[0-9])/)?$', filtered_view),
    ...

根据用户在网站上的使用方式,网址将为/manufacturer/123//manufacturer/123/456//type/456//type/456/123/(其中123为制造商ID,并且456是车辆类型ID。)