لماذا لا جانغو السيارات-الهروب بلدي <script> tags?

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

  •  03-07-2019
  •  | 
  •  

سؤال

بلدي التطبيق جانغو وقد الشخص الجدول الذي يحتوي على النص التالي في الحقل تسمية details:

<script>alert('Hello');</script>

عندما اتصل PersonForm.details في قالب بلدي ، يجعل صفحة البرنامج النصي وفقا لذلك (a.ك.a., تنبيه مع كلمة "مرحبا" هي عرض).أنا في حيرة من هذا السلوك لأن اعتقدت دائما جانغو 1.0 autoescaped محتويات القالب بشكل افتراضي.

أي فكرة عما يحدث هنا ؟

تحديث: هنا مقتطف من قالب بلدي.شيء رهيب مثير:

{{ person_form.details }}

تحديث 2: لقد حاولت escape, force-escape, ، escapejs.أي من هذه الأعمال.

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

المحلول

تحتاج إلى علامة القيم | آمنة أعتقد (أنا أظن أن كنت في ملء قيمة من قاعدة البيانات هنا(?)):

{{ value|safe }}

هل يمكن أن ترسل عينة من القالب ؟ قد تجعل من الأسهل لمعرفة ما هو الخطأ

[عدل] ..أم أنك تقول أنك تريد إلى الهروب القيم (جعلها آمنة)?هل حاولت يدويا الهروب من الميدان:

{{ value|escape }}

[Edit2] ربما escapejs من جانغو المشروع مستندات هو ذات الصلة:

escapejs

New in Django 1.0.

Escapes characters for use in JavaScript strings. This does not make the string safe for use in HTML, but does protect you from syntax errors when using templates to generate JavaScript/JSON.

[Edit3] ماذا عن force_escape:

    {{ value|force_escape }}

و أنا أعلم أنه واحد واضح ، ولكن هل أنت واثق من أنك لم يكن لديك أي التخزين المؤقت في المتصفح الخاص بك ؟ لقد تعثرت أكثر من ذلك واحد عدة مرات نفسي ;-)

نصائح أخرى

وجدت المشكلة.سلسلة JSON أنا باستخدام لتقديم البيانات إلى بعض تحويلة الحاجيات هو الجاني.الشكر الكبير جون كيج.إجابة مقبولة رغم المشكلة التي تسبب بها مصدر آخر.

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