Размещение ссылок в list_detail.object_list на list_detail.object_detail
Я начал использовать Django и перехожу к общим представлениям. Отличная архитектура! Что ж, документы отличные, но для абсолютного новичка это немного похоже на документацию по Unix, где они имеют смысл, когда вы уже знаете, что делаете. Я искал и не могу найти это конкретно, а именно, как вы настраиваете шаблон object_list, чтобы вы могли щелкнуть по записи на отображаемом экране и получить object_detail?
Следующее работает. Причина, по которой я спрашиваю, состоит в том, чтобы узнать, выбираю ли я разумный маршрут, или есть какой-то лучший, более джангуйский способ сделать это?
У меня есть модель, в которой определен юникод, так что я могу идентифицировать записи в моей базе данных в удобочитаемой форме. Я хочу щелкнуть ссылку на странице, сгенерированной в object_list, чтобы перейти на страницу object_detail. Я понимаю, что хороший способ сделать это - создать систему, в которой URL-адрес детали будет выглядеть как http://www.example.com/xxx/5/ который будет вызывать страницу сведений для строки 5 в базе данных. Итак, я просто придумал следующее, и мой вопрос: я на правильном пути?
Я сделал шаблон страницы для представления списка, который содержит следующее:
<ul>
{% for aninpatient in object_list %}
<li><a href='/inpatient-detail/{{ aninpatient.id }}/'>{{ aninpatient }}</a></li>
{% endfor %}
</ul>
Здесь, object_list происходит из общего представления list_detail.object_list. Цикл for проходит по списку объектов object_list. В каждой строке я создаю якорь в html, который ссылается на нужный href, "/inpatient-detail/nn/", где nn - это поле id каждой строки в таблице базы данных. Отображаемая ссылка - это строка в кодировке Unicode, которая, следовательно, является кликабельной ссылкой. Я настроил шаблоны, и это прекрасно работает.
Итак, я иду в правильном направлении? Похоже, будет просто расширить это, чтобы иметь возможность добавлять и редактировать и удалять ссылки в шаблоне.
Существует ли общий вид, который использует преимущества модели для создания страницы с подробностями? Я использовал помощник ModelForm из django.forms, чтобы создать объект формы, который отлично подходил для создания формы ввода (с автоматической проверкой! Вау, это было круто!), Так есть ли что-то подобное для создания страницы подробного представления?
Стив
1 ответ
Если вы используете django < 1.3, то то, что вы делаете, в основном идеально. Эти общие представления очень хороши для быстрого создания страниц. Если вы используете django 1.3, вам нужно использовать базовые представления на основе классов. Как только вы поймете, что они безумно хороши.
Единственное замечание, которое у меня есть, это то, что вы должны использовать теги {% url %} в своих шаблонах вместо жестких кодов URL. В ваших файлах urls.conf определите именованные URL, например:
url('inpatient-detail/(?P<inpatient_id>\d+)/$', 'your_view', name='inpatient_detail')
и в вашем шаблоне (для django < 1.3):
<a href="{% url inpatient_detail inpatient_id=aninpatient.id %}">...</a>
В версии 1.3 появился новый URL-тег, который еще больше улучшает жизнь.