Шаблоны Django: как сохранить элемент в цикле {% for%}? - PullRequest
0 голосов
/ 22 января 2010

Это приложение возвращает одноклассников юристов .

Когда пользователь ищет только имя и результат более 1 Я оставляю запрос в форме и прошу его ввести фамилию. Но я подумал, что было бы лучше, если бы пользователь просто нажимал на одно из имен и результаты поиска возвращались напрямую. (в этот момент ссылка снова приведет вас к форме поиска.)

В шаблоне запрос и фамилия, которые мне нужны, находятся внутри цикла {% for lawyer in lawyers %} в качестве атрибутов: lawyer.first и lawyer.last. Я не мог понять, как сохранить их для создания запроса. Можете ли вы помочь мне с тем, как решить эту проблему?

Примечание. Шаблон приведен ниже, но я добавил функцию view в pastebin.com. Это 60 строк, я не был уверен, стоит ли публиковать это здесь.

Спасибо.

<html>
<head>
    <title>Search results</title>
</head>
<body>

 <p>You searched for <strong>{{ first|capfirst }} </strong>.</p>

<p>There are {{ lawyers|length }} {{ first|capfirst }} in the database. Please select one.</p>

{% for lawyer in lawyers %}
    <ul><li><a href="/search/">{{ lawyer.first }} {{ lawyer.last }} {{ lawyer.firm_name }} {{ lawyer.school}} class of {{ lawyer.year_graduated }}</a></li></ul>
{% endfor %}

<form action="" method="get">
{{ form.as_p }}
<input type="submit" value="Submit">
    </form>
</body>
</html>

Редактировать

Нужно ли создавать новую функцию просмотра, как эта?

def new_query(request):
    last_name = request.GET.get('lawyers.last')
    first_name = request.GET.get('lawyer.first')
    ....

Ответы [ 2 ]

1 голос
/ 23 января 2010

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

<a href="?first_name={{lawyer.first}}&last_name={{lawyer.last}">

это отправит запрос на текущий URL (потому что мы не указываем ни одного URL, только параметры GET. Это эквивалент

<form action="" method="get">

но добавление в форму 2 параметров, называемых first_name и last_name, так же, как они вызываются в обычной форме - таким образом, то же представление может обработать этот запрос.

Если, однако, у вас есть дополнительные параметры в форме (например, year_of_graduation), вам придется добавить их тоже.

1 голос
/ 22 января 2010

Вы можете добавить их в качестве параметров GET

<a href="/search/?first={{lawyer.first}}&last={{lawyer.last}">

Затем через request.GET вы можете получить доступ к пропущенным предметам.

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