مرحبا،
في قائمة المرشحات المضمنة (http://jinja.pocoo.org/docs/templates/#list-of-builtin-filters) لم أجد مرشح "urlencode". إنه مفقود؟
لا أفهم ، في jinja1 يوجد هذا الفلتر: http://wsgiarea.pocoo.org/jinja/docs/filters.html
هل لديك بعض التعليقات حول ذلك؟
يعتبر،
ستيفان
لماذا لا تصنع خاصتك أثناء إعداده ، احرص على فهم كيفية ارتباط urllib.urlencode و urllib.quote و urllib.quote_plus.
بالنسبة لي ، انتهى بي الأمر بإنشاء وظيفة يمكن استخدامها كعامل تصفية ووظيفة قابلة للاستدعاء (تم إجراؤها لتطبيق flask):
@app.template_filter('urlencode')
def urlencode(uri, **query):
parts = list(urlparse.urlparse(uri))
q = urlparse.parse_qs(parts[4])
q.update(query)
parts[4] = urllib.urlencode(q)
return urlparse.urlunparse(parts)
app.jinja_env.globals['urlencode'] = urlencode
المستخدمة في قالب كدالة:
{% set vendor_url = urlencode('http://www.google.com/search', q=adset.keyword.text) %}
المستخدمة في نموذج كعامل تصفية:
{% set vendor_url = 'http://www.google.com/search?q=%s' % querytext %}
{{ vendor_url|urlencode }}
لماذا لا تصنع خاصتك
نظرًا لأن jinja2 يحتوي بالفعل على العديد من عوامل تصفية الإنشاء (http://jinja.pocoo.org/docs/templates/#builtin-filters) و urlencode هو ميزة كلاسيكية يمكن إلحاقها في مرشحات builin.
يعتبر،
ستيفان
urllib.quote_plus(uri)
سيكون من الرائع أن يتم الالتزام بهذا الإصدار الرئيسي. إنه شيء يتوقعه المرء في نظام قالب كامل مثل jinja2.
radekstepangfuchedzhy لدي انطباع بأن الأمر ليس بهذه البساطة مثل تمرير السلسلة / العلامات من خلال الاقتباس أو الاقتباس الإضافي . في حالتي ، تسبب هذا في مشاكل يونيكود في quote_plus. يبدو أنه يجب تشفير unicode إلى utf-8 للعمل بشكل جيد مع quote_plus (). هذا هو الحل الخاص بي:
@app.template_filter('urlencode')
def urlencode_filter(s):
if type(s) == 'Markup':
s = s.unescape()
s = s.encode('utf8')
s = urllib.quote_plus(s)
return Markup(s)
لأي شخص يتعثر في هذا يبحث عن مرشح urlencode
، تمت إضافته مرة أخرى في عام 2012 في 06a8b1c02b2091b31ef4f39ddde3184f25f58260 و 5145401fe5f9995a32757f34359623b87048ab8b. مناقشة في # 85.
يطلق عليه urlencode
وليس urlquote
أو urlquoteplus
أو urlquote_plus
أو urlescape
(إضافة هذه لأي شخص آخر يهبط عبر البحث).
التعليق الأكثر فائدة
لأي شخص يتعثر في هذا يبحث عن مرشح
urlencode
، تمت إضافته مرة أخرى في عام 2012 في 06a8b1c02b2091b31ef4f39ddde3184f25f58260 و 5145401fe5f9995a32757f34359623b87048ab8b. مناقشة في # 85.يطلق عليه
urlencode
وليسurlquote
أوurlquoteplus
أوurlquote_plus
أوurlescape
(إضافة هذه لأي شخص آخر يهبط عبر البحث).