मैं टेम्प्लेट 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')

काम नहीं कर रहा (((

4
Dev KD 11 सितंबर 2016, 04:35
आप जिस यूआरएल को मार रहे हैं वह क्या है?
 – 
arcegk
11 सितंबर 2016, 08:41
उपरोक्त कोड निश्चित रूप से काम करेगा ...
 – 
Raja Simon
11 सितंबर 2016, 08:46
आपका url वास्तव में इनमें से किस दृश्य की ओर इशारा कर रहा है?
 – 
Daniel Roseman
11 सितंबर 2016, 10:07
/home/linux/Mysait/MysaitProject/blog/templates/blog/header.html और /home/linux/Mysait/MysaitProject/blog/templates/blog/base.html
 – 
Dev KD
11 सितंबर 2016, 12:12
व्यूज़.py /home/linux/Mysait/MysaitProject/blog/templates/blog/views.py
 – 
Dev KD
11 सितंबर 2016, 12:27

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 %}

तो लैंडिंग_पेज नामक दृश्य के लिए आपको लैंडिंग.एचटीएमएल टेम्पलेट प्रस्तुत करना होगा।

1
Sindbag 11 सितंबर 2016, 20:03

मुझे लगता है कि आप django टेम्पलेट्स में शामिल और विस्तार के बीच भ्रमित होंगे।

आपके फ़ाइल नामों के आधार पर, मुझे लगता है कि header.html आंशिक है जिसे base.html में शामिल किया जाना है और आप base.html प्रस्तुत कर रहे हैं।

Django टेम्प्लेटिंग इंजन इस तरह से काम नहीं करता है।

उपयोग करें base.html में /header.html" %} और juse के पास header.html में हैडर html है।

0
Aswin Kumar K P 11 सितंबर 2016, 10:38
मेरे पास सभी पृष्ठों पर एक ही शीर्षलेख है। तो मैं शामिल के माध्यम से उपयुक्त कनेक्शन विधि नहीं है। शामिल करें - मैं इसका उपयोग अद्वितीय ब्लॉक (साइट पर दुर्लभ) को जोड़ने के लिए करूँगा कम लोड।
 – 
Dev KD
11 सितंबर 2016, 12:24