كيف يمكنني وضع كتلة من المحتوى الذي تم إنشاؤه ديناميكيًا في قالب جانغو؟

StackOverflow https://stackoverflow.com/questions/1024220

  •  06-07-2019
  •  | 
  •  

سؤال

أريد تضمين أشياء مثل حالة تويتر، أو العلامات اللذيذة، في قوالب جانغو الخاصة بي.

هذه الأشياء ديناميكية، لكنها منتظمة.كيف يتم القيام بعمل هذا؟

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

المحلول

هناك عدة طرق للتعامل مع هذا الأمر، لذا يمكنك اختيار الطريقة التي تناسب أسلوبك أو متطلباتك الشخصية على أفضل وجه:

  1. متغير سياق القالب:كما أجاب Alex، يمكنك وضع المحتوى الخاص بك في متغير سياق يتم تضمينه في سياق كل قالب يتم إنشاؤه بواسطة كل عرض.حتى أن Django يوفر آلية للقيام بذلك تلقائيًا، تسمى a معالج السياق.الايجابيات:واضحة جدا.سلبيات:لن يتم تحديث المحتوى الجديد ديناميكيًا على متصفحات العميل.

  2. تحميل ديناميكي أجاكس:كما ذكر Alex وDave، يمكنك تحميل المحتوى الخاص بك ديناميكيًا باستخدام طرق AJAX.كمثال على استخدام jQuery، يمكنك وضع عنصر نائب في القالب الخاص بك مثل <div id="twitterfeed"></div> ثم ضعها في كتلة جافا سكريبت في القالب الخاص بك $("#twitterfeed").load("{% url twitterfeed %}"); أين twitterfeed هو عنوان URL مسمى بهذا الاسم في urls.py الخاص بك.الايجابيات:سيتم تحديث المتصفحات بشكل حيوي.سلبيات:يمكن أن يكون الأمر صعبًا إذا كنت لا تعرف Javascript.

  3. علامة التضمين:يوفر Django نوعًا من علامة القالب يسمى an علامة التضمين, ، وهي في الأساس علامة قالب مخصصة يمكنها عرض محتوى ديناميكي.يشبه بطريقة ما متغير السياق، باستثناء أن التعليمات البرمجية الخاصة بك لإنشاء المحتوى لن يتم استدعاؤها إلا عند استخدام علامة القالب المخصصة في القالب الخاص بك بدلاً من استدعائها لكل عرض.فائدة أخرى هي أن المحتوى يتم إنشاؤه من قالب خاص به.يمكنك القيام بذلك باستخدام متغير سياق عادي بالطبع، ولكنه ليس نظيفًا (IMHO) مثل استخدام علامة التضمين.الايجابيات:واضحة جدا ونظيفة.سلبيات:لن يتم تحديث المحتوى الجديد ديناميكيًا على متصفحات العميل.

نصائح أخرى

وهذا النهج أبسط هو استخدام {{ mycontent }} في القالب الخاص بك (حيث تريد ديناميكيا محتوى لتظهر) ووضع المراسلات بين mycontent وقيمته في سياق استخدام لجعل القالب - أي الجزء الأكثر أهمية من النموذجيه جانغو ل.

إذا ماذا يعني لك هو أنك تريد دعم اياكس حيث جافا سكريبت على الصفحة بالتحديث بشكل مستمر مثل هذا المحتوى وفقا لما يريد الخادم أن يكون في أي وقت من الأوقات، وأنا أقترح النظر في <لأ href = "HTTP: // كود .google.com / ع / dojango / "يختلط =" نوفولو noreferrer "> dojango ، ومشروع التكامل دوجو / جانغو - انها ليست حتى الآن كما ناضجة تماما كما في كل من دوجو وجانغو هي من تلقاء نفسها (وليس نسخة 0.4 بعد)، إلا أنها أصبحت صالحة للاستعمال ومفيد.

وهناك تقنية شائعة لترك شعبة نائبا في المحتوى ولدت، ثم ملء شعبة من الناحية العميل عن طريق مكالمة AJAX من جافا سكريبت أن تقوم بتضمين في الصفحة.

وهذا يتيح لك الاستفادة من وجود القابلة للتخزين المؤقت (تحميل سريع) الصفحة الرئيسية، مع بت دينامية منفصلة. اعتمادا على كيفية العيش تريد البتات ديناميكية، يمكنك يمكن تخزين حتى لهم لفترات أقصر.

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