2010-04-05 39 views
3

我设计用于查看车辆的照片图库应用,并有两个参数:什么是最好的方式来格式化Django的两个参数,其中任何一个是可选的?

  1. 厂商
  2. 车型

现在你可以查看下去,但不能同时使用。网址都像这样:

  1. /制造/#

其中#是一个ID号

  • /类型/#。如何/我可以格式化我的网址,以便它们都可以接受?我目前的解决方案是:/ both /#/#但这需要一些重新工具,因为应用程序不知道何时需要过滤。任何洞察力将不胜感激。

  • 回答

    2

    如果你处于两种情况都是可选的情况下,或许你最好的选择是通过GET参数来处理它。

    +0

    哇,那就是它。谢谢! – Parker 2010-04-05 03:27:07

    +0

    你的意思是你的网址看起来像'http://example.com/view?manufacturer = foo'和'http://example.com/view?type = bar&manufacturer = baz'?我认为django社区认为这样的GET参数是丑陋的,并且是最好的避免。 – blokeley 2010-04-05 09:09:19

    +0

    是的,他们应尽可能避免。但是,GET参数的存在是出于某种原因,并且在某些情况下,至少在我看来,如果逻辑上合理的话,可以使用它们。 – digitaldreamer 2010-04-05 12:14:27

    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是车型号。)

    相关问题