سؤال

أتساءل عما إذا كان يمكن لشخص ما مساعدتي في معرفة أفضل طريقة للمشكلة التالية. أقوم بإنشاء تطبيق ويب يستخدم Templating Django لبناء مكون واجهة المستخدم الخاصة به. هناك عدد من عناصر HTML الشائعة مثل الرأس / التذييل ، HTML Head ، Masthead وما إلى ذلك. أود أن أرمز هذه مرة واحدة و "تضمين / دمج" مع قوالب أخرى تمثل وظيفة التطبيق الأساسية.

هل هذا ممكن باستخدام قوالب Django؟ إذا كان الأمر كذلك ، فكيف يمكنني القيام بذلك؟

هل كانت مفيدة؟

المحلول

يمكنك استخدام Django's extends بطاقة شعار. قل أن لديك رأس وتذييل. يمكنك عمل قالب ، يسمى ، على سبيل المثال ، foo.django:

<h1>My HTML Header</h1>
<!-- an so on -->

{% block content %}
{% endblock %}

<!-- html footer -->

ثم ، يمكنك عمل قالب آخر ، على سبيل المثال ، bar.django:

{% extends "foo.django" %}

{% block content %}
This overrides the content block in foo.django.
{% endblock %}

... والتي ستجعل:

<h1>My HTML Header</h1>
<!-- an so on -->

This overrides the content block in foo.django.

<!-- html footer -->

هناك تعليمات جيدة على قوالب Django في http://www.djangobook.com/en/1.0/chapter04/.

نصائح أخرى

ال {% extends %} و {% include %} الأساليب جيدة لعناصر الصفحة التي لا تحتاج إلى معلومات إضافية في السياق.

بمجرد الحاجة إلى إدراج المزيد من الأشياء في السياق من قاعدة البيانات ، تكون علامات القالب مفيدة. كمثال ، contrib.comments تطبيق يتضمن مع Django تعريف أ {% get_comment_list %} علامة قالب لاسترداد التعليقات المرفقة بمثيل نموذج معين. إليك كيفية استخدامه:

<div>
{% load comments %}
{% get_comment_list for my_instance as comment_list %}
{% for comment in comment_list %}
  <p><a href="{{ comment.url }}">{{ comment.name }}</a> wrote:</p>
  {{ comment.comment }}
{% endfor %}
</div>

يمكنك حفظ هذا في قالب منفصل و {% include %} في قوالب أخرى.

لمحتوىك الخاص ، يمكنك كتابة علامات القالب المخصص الخاص بك. يتبع وثائق. كلما كان ذلك ممكنًا ، من المريح كتابة العلامات باستخدام علامة بسيطة آلية. ستجد علامات قالب جاهزة مفيدة djangosnippets.org و ال المدونات.

جرب ال {% include %} بطاقة شعار.

http://docs.djangoproject.com/en/dev/ref/templates/builtins/#include

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top