Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
为两个参数格式化Django URL的最佳方法是什么,这两个参数都是可选的?_Django - Fatal编程技术网

为两个参数格式化Django URL的最佳方法是什么,这两个参数都是可选的?

为两个参数格式化Django URL的最佳方法是什么,这两个参数都是可选的?,django,Django,我正在设计一个用于查看车辆图片的图库应用程序,有两个参数: 制造商 车型 现在您可以查看其中一个,但不能同时查看两个。URL如下所示: /制造商/# /类型/# 其中#是一个ID号。我如何/可以格式化我的URL,使其可以同时接受这两种格式?我目前的解决方案是:同时使用/both/#/#,但这需要一些重新工具,因为应用程序不知道何时需要同时使用这两种方法进行过滤。如果您有任何见解,我们将不胜感激。如果您所处的环境中两者都是可选的,那么您的最佳选择可能是通过获取参数来处理它。该方案可能适用于您: v

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

  • 制造商
  • 车型
  • 现在您可以查看其中一个,但不能同时查看两个。URL如下所示:

  • /制造商/#
  • /类型/#

  • 其中#是一个ID号。我如何/可以格式化我的URL,使其可以同时接受这两种格式?我目前的解决方案是:同时使用/both/#/#,但这需要一些重新工具,因为应用程序不知道何时需要同时使用这两种方法进行过滤。如果您有任何见解,我们将不胜感激。

    如果您所处的环境中两者都是可选的,那么您的最佳选择可能是通过获取参数来处理它。

    该方案可能适用于您:

    views.py:

    def filtered_view (request, manufacturer_id=None, type_id=None):
        ...
    
    URL.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),
        ...
    
    。。。
    url(r'^manufacturer/(?P[0-9]+)/(?P[0-9])/)?$,过滤视图),
    url(r'^type/(?P[0-9]+)/(?P[0-9])/)?$,已筛选的_视图),
    ...
    

    根据用户通过网站的方式,URL将是
    /manufacturer/123/
    /manufacturer/123/456/
    /type/456/
    /type/456/123/
    (其中
    123
    是制造商id,
    456
    是车辆类型id)。

    哇,确实如此。谢谢你是说你的URL看起来像
    http://example.com/view?manufacturer=foo
    http://example.com/view?type=bar&manufacturer=baz
    ?我认为django社区认为这样的GET参数是丑陋的,最好避免。是的,应该尽可能避免。然而,GET参数的存在是有原因的,在某些情况下,至少在我看来,如果逻辑上合理的话,使用它们是可以的。否则我如何在不使用非常严格的URL的情况下实现这一点,因为必须指定这两个参数?遵守使应用程序更难使用的URL标准似乎很愚蠢。