मैं अपनी .html फ़ाइल से अपने view.py में घोषित शब्दकोश मान तक नहीं पहुंच सकता।

मैं इसके बारे में पिछले कई धागों का घंटों से उपयोग करने की कोशिश कर रहा हूं और मैं इसे नहीं देख सकता। मुझे यकीन है कि मैं कुछ गलत कर रहा हूँ।

View.py

def test(request):
    now = datetime.now()
    day = now.strftime("%Y-%m-%d")
    year = now.strftime("%Y")
    month = now.strftime("%m")

    context  = {
              "content": [day,year,month],
              "object_list": queryset     
             }
    return render(request, "test.html", context)

फ़िल्टर.py

from django.template.defaulttags import register

@register.filter(name='get_item')
def get_item(dictionary, key):
    return dictionary.get(key)

Test.html

{% load filtres_dictionary %}
{% with content.get_item.day as content.day %}

    <p>{{ content|get_item:content.day }}</p>

{% endwith %}

मुझे वर्तमान में निम्न त्रुटि संदेश मिल रहा है, और जो मैं प्राप्त करना चाहता था वह है: 2019-06-13। मेरी वेबसाइट में मुद्रित।

['2019-06-13', '2019', '06'] में कुंजी [दिन] के लिए VariableDoesNotExist /test/ विफल लुकअप

1
Josep Mor 14 जून 2019, 00:00

1 उत्तर

सबसे बढ़िया उत्तर

उपरोक्त एक शब्दकोश मान नहीं है। यह एक सूची है। हालांकि आप इंडेक्स के माध्यम से सूची तत्वों तक पहुंच सकते हैं, जैसे:

<p>{{ content.0 }}</p>

लाइन {% with content.get_item.day as content.day %} ज्यादा मायने नहीं रखती है: ऐसा लगता है कि आप यहां एक काल्पनिक उप-शब्दकोश के लिए एक गैर-मौजूदा मान निर्दिष्ट कर रहे हैं।

ऐसा कहा जा रहा है, मुझे विश्वास नहीं है कि सूची का उपयोग करना यहां एक अच्छा विचार है। आप वास्तव में एक शब्दकोश का बेहतर उपयोग करते हैं, जैसे:

context = {
    'content': {
        'day': day,
        'month': month,
        'year': year
    },
    'object_list': queryset     
}

तो आप इसे टेम्पलेट में इस प्रकार एक्सेस कर सकते हैं:

<p>{{ content.day }}</p>

नोट: आपके द्वारा यहां उपयोग किया जाने वाला get_item टेम्प्लेट फ़िल्टर उपयोगी है यदि कुंजी स्वयं परिवर्तनशील है, इस स्थिति में आप इस प्रकार एक मनमानी कुंजी पास कर सकते हैं। यहाँ ऐसा नहीं है।

1
Willem Van Onsem 14 जून 2019, 00:24