استخدم WTForms مع قوالب WebApp و Django على محرك تطبيق Google
-
25-09-2019 - |
سؤال
أحاول استخدام WTForms مع WebApp دون حظ كبير.
أود أن أكون قادرًا على استخدام form_field
Templatetag ، كما هو موضح في الوثائق:
{% form_field form.username class="big_text" onclick="do_something()" %}
لقد تم تثبيت WTForms بشكل جيد في طلبي ، لكن علامات قالب Django الخاصة بها لا تعمل بالنسبة لي. هل لدى أي شخص تعليمات حول كيفية تثبيت هذا؟
إذا لم أتمكن من الحصول على هذا العمل ، فمن المحتمل أن أستسلم وأتحول إلى قوالب Jinja2. السبب في أننا احتفظنا به مع Django حتى الآن هو الحد من عدد التبعيات قدر الإمكان.
هذا ما جربته حتى الآن:
لقد قمت بتثبيت Django 1.1 محليًا وقمت بتمكينه لكل الوثائق.
حاولت إضافة INSTALLED_APPS = ['wtforms.ext.django']
لي settings.py
- بدون تأثير.
حاولت تسجيل WTForms Templatetag يدويًا :.
register = webapp.template.create_template_register()
from wtforms.ext.django.templatetags import wtforms
register.tag('form_field', wtforms.do_form_field)
هذا أعطاني خطأ: InvalidTemplateLibrary: Could not load template library from template_helpers, No module named django.templatetags
لذلك حاولت نسخ ولصق علامات القالب في الكود الخاص بي ، وحصلت على الخطأ TemplateSyntaxError: Could not parse the remainder: ' form.foobar' from 'form_field form.foobar
.
ومع ذلك ، لا أعتقد أن تسجيل Templatetag نجح ، لأن الخطأ كان هو نفسه بدون هذا الرمز.
تحديث: سأترك هذا السؤال في حالة قيام شخص ما على الإنترنت بإجابة عليه يومًا ما ، لكنني تحولت إلى Jinja2 والآن كل شيء يعمل بشكل مثالي. WebApp مع قوالب Django ماتت بالنسبة لي. ؛-)
المحلول
أوصي قوالب Jinja2 على Django: http://jinja.pocoo.org/ إنه يعتمد على قوالب Django ولكنها أكثر قوة وسهلة الاستخدام. لا أعتقد أنه من الجيد استخدام قوالب Django بدون مكدس Django. أيضًا ، إذا كنت تريد إطارًا أكثر تنظيماً ، فإن إطار عمل بسيط للغاية هو قارورة: http://www.pocoo.org/projects/flask/#flask. لا أستطيع الثناء على هاتين المكتبتين بما فيه الكفاية. عملت لفترة طويلة في Django ووجدت أن هذا التحرير والسرد منعش للغاية ومختصرة.
ملاحظة: يجب أن تكون هذه عملية بسيطة للغاية للمنفذ. استغرق الأمر مني 10 دقائق للمنفذ عبر موقع ويب عندما اكتشفت للتو قارورة.