اذهب إلى المحتوى

السؤال

نشر

بفرض أن لدي قالب كالقالب التالي:

<div>Hello {{name}}!</div>
<p>This is your first visit, {{name}}?</p>

ألن يكون من المفيد تحديد قيمة المتغير name من داخل القالب نفسه. لذلك أنا أبحث عن شيء مثل هذا:

{% name = "Amer" %}     
<div>Hello {{name}}!</div>
<p>This is your first visit, {{name}}?</p>

هل يوجد شيء مثل هذا في جانغو Django يمكنني من عمل متغيرات داخل القالب نفسه؟

Recommended Posts

  • 1
نشر

يوفر Django طريقة لعمل متغيرات محلية local variables داخل القالب نفسه بشكل إفتراضي من خلال كلمة with على النحو التالي:

{% with name="World" %}     
<div>Hello {{name}}!</div>
<p>This is your first visit, {{name}}?</p>
{% endwith %}

لاحظ أن المتغير سوف يعمل داخل نطاق العنصر with فقط، لذلك إن كنت في حاجة لمتغير يعمل في كل القالب فسوف تحتاج إلى إحاطة القالب بالعنصر with بالكامل.

وإن كنت تستخدم قوالب jinja، فيمكنك عمل نفس الشيء من خلال الكود التالي:

{% set name="Amer" %}     
<div>Hello {{name}}!</div>
<p>This is your first visit, {{name}}?</p>

 

  • 0
نشر

يجب أن يحتوي التطبيق على مجلد Templatetags على نفس المستوى مثل Models.py و views.py  .. إلخ. وإذا لم يكن هذا موجود فعليَاً، قم بإنشائه ولا تنس ملف __init__.py لضمان معاملة المجلد على أنه حزمة بايثون.
أولاً قم بإنشاء ملف باسم event.py داخل المجلد Templatetags مع الكود التالي(بعد إضافة وحدة Templatetags، ستحتاج إلى إعادة تشغيل الخادم قبل أن تتمكن من استخدام ال tags أو filters في القوالب) :

from django import template as tem
reg = tem.Library()
@reg.simple_tag
def define(val=None):
  return val

ثم في القالب الخاص بك يمكنك تعيين قيم إلى ال context كالتالي:

{% load event %}
{% if item %}
   {% define "Edit" as action %}
{% else %}
   {% define "Create" as action %}
{% endif %}
Would you like to {{action}} this item?

 

انضم إلى النقاش

يمكنك أن تنشر الآن وتسجل لاحقًا. إذا كان لديك حساب، فسجل الدخول الآن لتنشر باسم حسابك.

زائر
أجب على هذا السؤال...

×   لقد أضفت محتوى بخط أو تنسيق مختلف.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   جرى استعادة المحتوى السابق..   امسح المحرر

×   You cannot paste images directly. Upload or insert images from URL.

  • إعلانات

  • تابعنا على



×
×
  • أضف...