سؤال

أنا باستخدام Google App Engine و جانغو قوالب.
لدي جدول أريد أن عرض الكائنات تبدو شيئا مثل:

Object Result:
    Items = [item1,item2]
    Users = [{name='username',item1=3,item2=4},..]

في جانغو القالب:

<table>
<tr align="center">
    <th>user</th>
    {% for item in result.items %}
        <th>{{item}}</th>
    {% endfor %}
</tr>

{% for user in result.users %}
    <tr align="center"> 
        <td>{{user.name}}</td>
        {% for item in result.items %}
            <td>{{ user.item }}</td>
        {% endfor %}
    </tr>
{% endfor %}
</table>

الآن جانغو documention الدول التي عندما يرى . في المتغيرات
يحاول العديد من الأشياء للحصول على البيانات, واحد منها هو بحث القاموس وهو بالضبط ما أريد ولكن لا يبدو أن يحدث...

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

المحلول

وجدت "أجمل"/"أفضل" حل للحصول على المتغيرات داخل ليس اجمل طريقة, لكنه يعمل.

تثبيت عامل تصفية مخصص في جانغو الذي يحصل على المفتاح الخاص بك ديكت كمعلمة

أن تجعل من العمل في تطبيقات جوجل-محرك تحتاج إلى إضافة الملف إلى الدليل الرئيسي الخاص, دعوت لي django_hack.py التي تحتوي على هذه القطعة الصغيرة من التعليمات البرمجية

from google.appengine.ext import webapp

register = webapp.template.create_template_register()

def hash(h,key):
    if key in h:
        return h[key]
    else:
        return None

register.filter(hash)

الآن أن لدينا هذا الملف كل ما عليك القيام به هو معرفة التطبيق-محرك استخدامه...ونحن نفعل ذلك عن طريق إضافة هذا الخط قليلا إلى ملف main

webapp.template.register_template_library('django_hack')

و في قالب عرض إضافة هذا القالب بدلا من المعتاد رمز

{{ user|hash:item }}

و يجب أن تعمل تماما =)

نصائح أخرى

أنا على افتراض أن جزءا لا يعمل هو {{ user.item }}.

جانغو سوف تحاول قاموس البحث ، ولكن باستخدام السلسلة "item" و لا قيمة item حلقة متغير.جانغو فعلت نفس الشيء عندما حل {{ user.name }} إلى name السمة user كائن بدلا من البحث عن متغير يسمى name.

أعتقد أنك سوف تحتاج إلى القيام ببعض تجهيزها من البيانات في طريقة العرض الخاصة بك قبل أن يمكنك جعله في القالب الخاص بك.

أو يمكنك استخدام الافتراضي جانغو النظام الذي يستخدم لحل الصفات في tempaltes مثل هذا :

from django.template import Variable, VariableDoesNotExist
@register.filter
def hash(object, attr):
    pseudo_context = { 'object' : object }
    try:
        value = Variable('object.%s' % attr).resolve(pseudo_context)
    except VariableDoesNotExist:
        value = None
return value

التي تعمل فقط

في القالب الخاص بك :

{{ user|hash:item }}

@ديف ويب (لم يتم تصنيفها عالية بما يكفي التعليق بعد)

نقطة البحث يمكن تلخيص مثل هذا:عندما القالب النظام لقاءات نقطة في اسم متغير ، فإنه يحاول التالية عمليات البحث في هذا النظام:

* Dictionary lookup (e.e., foo["bar"])
* Attribute lookup (e.g., foo.bar)
* Method call (e.g., foo.bar())
* List-index lookup (e.g., foo[bar])

يستخدم النظام أول بحث نوع يعمل.انها قصيرة-دائرة المنطق.

كبديل k,v المستخدم.البنود على محرك جوجل التطبيق باستخدام جانغو القوالب حيث المستخدم = {"أ": 1, "ب", 2, 'c', 3}

{% for pair in user.items %}
   {% for keyval in pair %} {{ keyval }}{% endfor %}<br>
{% endfor %}

1
ب 2
ج 3

الزوج = (المفتاح القيمة) لكل القاموس البند.

لا هذا:

{{ user.item }}

يكون هذا ؟

{{ item }}

لا يوجد كائن المستخدم في سياق هذه الحلقة....?

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