Django: я должен использовать Строки Запроса или чистые URL, чтобы отобразить параметры отображения?И как? - PullRequest
1 голос
/ 14 июня 2011

У меня есть следующий urlconf:

urlpatterns = patterns('page.manager.views',
    url(r'^$', 'pages', name='page_manager-pages'),
    url(r'^add/$', 'add_page', name='page_manager-add_page'),
    url(r'^(?P<page_id>\d+)/', include(object_patterns)),    
)

Представление 'pages' должно возвращать список объектов всех страниц. Пользователю будет предложено несколько вариантов отображения / поиска через боковое меню: - создано: любое / последние 6 часов / 12 часов / 24 часа / неделя - Статус: любой / status_1 / status_2 / status_3 - Продолжительность: любая / длительность_1 / длительность_2 / длительность_3 и т.д.

Эти параметры используются для выбора того, какие значения должны быть представлены пользователю, и могут использоваться в комбинации, например: созданный = любой, статус = статус_1, длительность = длительность_1

Мой вопрос: как лучше всего добиться этого в Джанго?

Что у меня так далеко: Я могу создать подкласс общего представления для объектов списка, создав представление, которое принимает аргументы (созданные, статус, длительность и т. Д.) И обеспечивает надлежащий набор запросов (с выбранными опциями упорядочения [или по умолчанию], передаваемыми вместе с другими аргументами).

Чтобы передать эти аргументы, кажется, что для этого подходят строки запроса, так как мы выбираем из ресурса (список всех страниц). Да / нет?

Мне также известно, что мы получаем эту информацию из request.GET.get ('имя_ аргумента').

Но как создать ссылки для параметров поиска? Например: любой, любой / status_1 / status_2 / status_3. Нам нужно знать, какие из них уже активны, так что ... шаблон тега? Может быть, проще?

Это правильное решение для обработки подобных вещей в Django, или есть лучший способ?

1 Ответ

1 голос
/ 14 июня 2011

Поскольку у вас есть отдельные, необязательные и неупорядоченные знания, способствующие вашему запросу, я думаю, что GET - лучший способ. Кроме того, обратите внимание, что request.GET является диктовкой (поэтому вы можете сделать request.GET ['status']).

Что касается параметров поиска, я бы сказал, что тег шаблона и переменная контекста могут быть подходящими в зависимости от деталей вашего представления. Мой наиболее вероятный подход состоит в том, чтобы заполнить контекстный диктат флажками True / False, для которых необходимо отобразить, а затем иметь блоки {% if%} для сортировки в шаблоне.

...