मैं django में एक विस्तृत दृश्य बनाने की कोशिश कर रहा हूं, लेकिन टेम्पलेट में कुछ भी प्रदर्शित नहीं होता है।
View.py
class MyDetailView(DetailView):
model = Article
template_name = 'detail.html'
विवरण.html
{% extends 'base.html' %}
{% load i18n %}
{% endblock %}
{% block content %}
{% for item in itemlist %}
{{item.pk}}
{{item.title}}
{% empty %}
There are no items in this list
{% endfor %}
{% endblock %}
यहाँ टेम्पलेट में कुछ भी क्यों प्रदर्शित नहीं होता है?
2 जवाब
आप itemlist
नाम के आइटम को DetailView
में टेम्प्लेट में पास नहीं करते हैं। एक ListView
(जो अधिक उपयुक्त लगता है) में, यह डिफ़ॉल्ट रूप से object_list
नामक एक संदर्भ चर का उपयोग करेगा। चूंकि वैरिएबल मौजूद नहीं है, इसलिए {% for … %}…{% endfor %}
टेम्प्लेट ब्लॉक [Django-doc] को खाली स्ट्रिंग में हल कर दिया जाएगा।
यदि आप Article
के क्वेरीसेट को संदर्भ में itemlist
नाम से पास करना चाहते हैं, तो आप context_object_name
विशेषता [Django-doc ]:
from django.views.generic import ListView
class MyDetailView(ListView):
model = Article
template_name = 'detail.html'
context_object_name = 'itemlist'
TypeError at /detail/5/ 'Article' object is not iterable Request Method: GET Request URL: http://127.0.0.1:8000/detail/5/
path('detail/<int:pk>/', views.MyDetailView.as_view(), name='detail'),
DetailView
के लिए आइटम निश्चित रूप से चलने योग्य नहीं है, क्योंकि एक लेख, अच्छी तरह से पुनरावृत्तियों का संग्रह नहीं है।
DetailView
है, आप पहली बार में {% for ... %}
लूप का उपयोग क्यों करते हैं?
जैसा कि विलेम ने आपको टिप्पणी में बताया था, आप एक विवरण दृश्य में हैं, इसलिए आपको पुनरावृति के लिए लूप की आवश्यकता नहीं है, आप केवल टेम्पलेट में विवरण दिखा सकते हैं जैसे: {{item.pk}}
ListView
का उपयोग करता हूं, तो मेरे पास सभी परिणाम होते हैं और केवल यही नहीं PK
जो मैं चाहता हूं
संबंधित सवाल
नए सवाल
python
पायथन एक बहु-प्रतिमान है, गतिशील रूप से टाइप किया हुआ, बहुउद्देशीय प्रोग्रामिंग भाषा है। यह एक साफ और एक समान वाक्यविन्यास सीखने, समझने और उपयोग करने के लिए त्वरित होने के लिए डिज़ाइन किया गया है। कृपया ध्यान दें कि अजगर 2 आधिकारिक तौर पर 01-01-2020 के समर्थन से बाहर है। फिर भी, संस्करण-विशिष्ट पायथन सवालों के लिए, [अजगर -२.०] या [अजगर -३.x] टैग जोड़ें। पायथन वेरिएंट (जैसे, ज्योथन, PyPy) या लाइब्रेरी (उदा।, पांडस और न्यूमपी) का उपयोग करते समय, कृपया इसे टैग में शामिल करें।
DetailView
में कोईitemlist
टेम्पलेट में पास नहीं हुआ है, (और एकListView
न तो)।