Каков наилучший способ отформатировать URL-адреса Django для двух параметров, каждый из которых является необязательным? - PullRequest
3 голосов
/ 05 апреля 2010

Я разрабатываю приложение галереи для просмотра фотографий автомобилей, и есть два параметра:

  1. Производитель
  2. Тип транспортного средства

Прямо сейчас вы можете просматривать любой, но не оба. URL идут так:

  1. / производитель / #
  2. / типа / #

Где # - идентификационный номер. Как / можно отформатировать мои URL, чтобы он мог принимать оба? Мое текущее решение - сделать: / both / # / #, но это требует некоторого переоснащения, так как приложение не знает, когда вы хотите фильтровать по обоим. Любое понимание будет оценено.

Ответы [ 2 ]

2 голосов
/ 05 апреля 2010

Если вы находитесь в ситуации, когда оба являются необязательными, возможно, вам лучше всего справиться с этим с помощью параметров GET.

0 голосов
/ 05 апреля 2010

Вероятно, эта схема будет работать для вас:

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),
    ...

И в зависимости от того, как пользователь проходит через сайт, URL-адреса будут /manufacturer/123/, /manufacturer/123/456/ или /type/456/, /type/456/123/ (где 123 - идентификатор производителя, а 456 - идентификатор типа автомобиля.)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...