Как организовать URL в django для представлений, обрабатывающих данные GET и анализирующих URL? - PullRequest
0 голосов
/ 02 февраля 2012

У меня есть вид, который отображает некоторые данные фильма. Я подумал, что было бы неплохо иметь представление, обрабатывающее URL-адрес, такой как movie-id/1234, для поиска идентификатора фильма 1234. Кроме того, я хотел бы иметь возможность ввести идентификатор в форму и отправить его на сервер и выполнить поиск для этого. Для этого я создал вторую запись в файле urls.py, показанном ниже.

urlpatterns = patterns('',
    url(r'movie-id/(?P<movie_id>.+?)/$', 'movieMan.views.detailMovie'),
    url(r'movie-id/$', 'movieMan.views.detailMovie', name='movieMan.detailMovie.post'),
)

Итак, если я хочу передать данные в мое представление либо через URL, либо через запрос GET или POST, мне нужно ввести два URL-адреса или есть более элегантный способ? Затем в коде представления я проверяю, есть ли какие-либо данные GET во входящем запросе.

Чтобы сделать второй URL-адрес пригодным для использования с механизмом шаблонов, где я хотел указать URL-адрес представления с использованием синтаксиса {% url movieMan.detailMovie.post %}, мне пришлось ввести атрибут имени в этом URL-адресе, чтобы различать эти два.

Я не уверен, что я думаю, что здесь слишком сложно. Теперь я спрашиваю себя, для чего подходит первая запись URL? Есть ли способ получить URL фильма напрямую? Когда эти виды URL вступают в игру и как они будут генерироваться в шаблоне?

Ответы [ 2 ]

2 голосов
/ 02 февраля 2012

Кроме того, я хотел бы иметь возможность ввести идентификатор в форму и отправьте это на сервер и найдите его.

Это на самом деле поиск? Потому что, если вы знаете идентификатор, а идентификатор является частью URL-адреса, у вас может быть текстовое поле, в которое пользователь может записать идентификатор, и вы будете перенаправлять с помощью javascript на «правильный» URL-адрес. Если идентификатор не существует, представление должно вернуть Http404 .

Если вы имеете в виду фактический поиск, то есть пользователя, отправляющего строку запроса, вам потребуется какое-то представление списка / результата, и в этом случае вы будете генерировать все ссылки на конкретные результаты, которыми вы будете конечно верны.

0 голосов
/ 02 февраля 2012

Не думаю, что есть более элегантный способ.

Я сделал почти то же самое:

url( r'^movies/search/((?P<query_string>[^/]+)/)?$', 'mediadb.views.search_movies' ),

Шаблон URL соответствует URL с параметром поиска или без него. В функции просмотра вам нужно проверить, был ли параметр определен в URL или в строке запроса.

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