मैं टेम्प्लेट base.html
टेम्प्लेट header.html
का विस्तार नहीं कर सकता
सामग्री base.html
<div id="main-container">
<!-- HEADER -->
{% block header %}{% endblock %}
<!-- END HEADER -->
</div>
सामग्री header.html
{% extends "blog/base.html" %}
{% block header %}
<header id="header">
***
</header>
{% endblock %}
ब्राउज़र में आउटपुट को कोड मिलता है:
<div id="main-container">
<!-- HEADER -->
<!-- END HEADER -->
टेम्पलेट का विस्तार करने में सक्षम क्यों नहीं हैं? {% include "blog/header.html"%}
कोड का उपयोग करके डाला गया। extends
का उपयोग कर नहीं। Django 1.10.1 का प्रयोग करें
views.py
from django.shortcuts import render
from django.utils import timezone
from .models import Post
from django.shortcuts import render, get_object_or_404
def post_list(request):
posts = Post.objects.filter(published_date__lte=timezone.now()).order_by('published_date')
return render(request, 'blog/index.html', {'posts': posts})
def post_detail(request, pk):
post = get_object_or_404 (Post, pk=pk)
return render(request, 'blog/base.html', {'post': post})
def header(request):
return render(request, 'blog/header.html')
होकर {% include "blog/header.html" %}
काम करता है। तो रास्ता सही लिखा है।
यहाँ त्रुटि सोचा:
def header(request):
return(request, 'blog/header.html')
def header(request):
render(request, 'blog/header.html')
def header(request):
return render_to_response (request, 'blog/header.html')
काम नहीं कर रहा (((
2 जवाब
यदि आप कुछ टेम्पलेट का विस्तार करना चाहते हैं, तो आपको {% विस्तारित ...%} टैग (आपके मामले में हेडर.एचटीएमएल) के साथ टेम्पलेट प्रस्तुत करना चाहिए, यदि आप पुनर्निर्मित टेम्पलेट में कुछ शामिल करना चाहते हैं, तो आपको {% शामिल ... का उपयोग करना चाहिए। %} उपनाम। आप विशेष पेज के लिए नया टेम्प्लेट बना सकते हैं और {% ब्लॉक हेड%} ओवरलोड कर सकते हैं, उदाहरण के लिए:
बेस.एचटीएमएल:
{% block header %}
{% include 'std_header.html' %}
{% endblock %}
{% block content %}
{% endblock %}
{% block footer%}
{% endblock %}
और विशेष पृष्ठ, उदाहरण के लिए लैंडिंग पृष्ठ डिफ़ॉल्ट शीर्षलेख अधिभारित करेगा:
लैंडिंग.एचटीएमएल:
{% extends 'base.html' %}
{% block header %}
{% include 'landing_header.html' %}
{% endblock %}
{% block content %}
<!-- landing page content -->
{% endblock %}
तो लैंडिंग_पेज नामक दृश्य के लिए आपको लैंडिंग.एचटीएमएल टेम्पलेट प्रस्तुत करना होगा।
मुझे लगता है कि आप django टेम्पलेट्स में शामिल और विस्तार के बीच भ्रमित होंगे।
आपके फ़ाइल नामों के आधार पर, मुझे लगता है कि header.html
आंशिक है जिसे base.html में शामिल किया जाना है और आप base.html
प्रस्तुत कर रहे हैं।
Django टेम्प्लेटिंग इंजन इस तरह से काम नहीं करता है।
उपयोग करें base.html
में /header.html" %} और juse के पास header.html
में हैडर html है।
संबंधित सवाल
नए सवाल
python
पायथन एक बहु-प्रतिमान है, गतिशील रूप से टाइप किया हुआ, बहुउद्देशीय प्रोग्रामिंग भाषा है। यह एक साफ और एक समान वाक्यविन्यास सीखने, समझने और उपयोग करने के लिए त्वरित होने के लिए डिज़ाइन किया गया है। कृपया ध्यान दें कि अजगर 2 आधिकारिक तौर पर 01-01-2020 के समर्थन से बाहर है। फिर भी, संस्करण-विशिष्ट पायथन सवालों के लिए, [अजगर -२.०] या [अजगर -३.x] टैग जोड़ें। पायथन वेरिएंट (जैसे, ज्योथन, PyPy) या लाइब्रेरी (उदा।, पांडस और न्यूमपी) का उपयोग करते समय, कृपया इसे टैग में शामिल करें।
/home/linux/Mysait/MysaitProject/blog/templates/blog/header.html
और/home/linux/Mysait/MysaitProject/blog/templates/blog/base.html
/home/linux/Mysait/MysaitProject/blog/templates/blog/views.py