Я изо всех сил пытаюсь понять, как лучше всего делать то, что, как мне кажется, я хочу сделать - теперь, возможно, у меня нет правильного понимания того, что лучше всего, поэтому, если нет, не стесняйтесь выть на меня и т. д.
По сути, мой вопрос заключается в том, как правильно абстрагировать функциональность приложения, указанную функциональность можно найти в приложении, которое является частью проекта?
Чтобы поместить в это некоторый контекст (это недалеко от того, чего я пытаюсь достичь):
Предположим, я создаю веб-сайт. У моего веб-сайта есть внешний вид, и я определил base.html
часть шаблона и различные элементы css в приложении django без модели.
Теперь я также пишу приложение для блога django. Я знаю, как включить его, чтобы модели отображались в моем текущем приложении, и я более чем счастлив, что могу использовать любой метод, который мне нравится, из различных пакетов, манипулировать моделями и делать с ним все на python.
Чего я не понимаю, так это того, как работать с представлениями. Кажется нелогичным хранить модели в другом месте, но создавать пользовательский интерфейс в моем текущем проекте (и, как следствие, в любом последующем проекте). Итак, я подумал, хорошо, включите urls
из папки моего приложения в мой проект, готово.
Тогда, конечно, я должен писать просмотры, и это нормально. Я могу это сделать.
Чего я не могу понять, так это того, как вписываются шаблоны: в моем приложении я хочу использовать такой шаблон:
<div class="entry">
<a href=""><h2>{{ entry.Title }}</h2></a>
<p>Published on: {{ entry.date_published|date:"j F Y" }}</p>
{{ entry.body_html }}
</div>
<a href="">X comments.</a> <a href=""">Add Comment</a> <a href="">Link</a>
<div id="commentdiv">
{% if comments %}
<ul id="commentlist">
{% for comment in Comments %}
<li></li>
{% endfor %}
</ul>
{% else %}
<p>There are no comments on this entry.</p>
{% endif %}
</div>
для просмотра записи, поэтому на своем сайте я перехожу к sitename.com/blog/...someparameters.../entryname' where blog is the
includein
urls.py` соответствующего корневого проекта. Все хорошо и хорошо, но как мне также прикрепить шаблон из этого проекта, то есть внешний вид? Я мог бы сделать все возможное и разработать базовый шаблон для приложения блога, но как насчет навигации и т. д.? Я мог бы захотеть включить один и тот же заголовок на каждой странице, даже если содержимое довольно разнообразно.
Теперь я знаю о директиве {% extends "template" %} и директиве {% include template %}. Почему они не работают, насколько я понимаю:
- {% extends %} — как мне узнать/указать, что я хочу расширить из корневого проекта? Если вы можете предоставить механизм для этого, я думаю, это очень хорошо решит проблему.
- {% include %} — подразумевает, что я должен предоставить представления для блога в загрузочном приложении в корневом проекте. Я действительно не хочу этого делать - я мог бы также перенести весь проект на это, если это так.
Итак, мой вопрос, как мне собрать все это вместе?
Изменить: я думаю, что этот вопрос очень похож на то, что Я спрашиваю и записал ответы. Тем не менее, они все еще не удовлетворяют.