簡體   English   中英

Django擴展無法正常工作

[英]Django extends not working

我在執行html視圖時遇到問題。 我有base.html,不會顯示其他文件的子視圖。 有人可以幫我做錯什么嗎? 這是我的文件: models.py

from django.db import models
from django.utils import timezone


class Kategorie(models.Model):
    glowna = models.CharField(max_length=150, verbose_name='Kategoria')

    class Meta:
        verbose_name='Kategoria'
        verbose_name_plural='Kategorie'

    def __str__(self):
        return self.glowna


class Witryna(models.Model):
    nazwa = models.CharField(default="", max_length=150, verbose_name = 'Nazwa strony')
    adres_www = models.CharField(max_length=70, verbose_name='Adres www')
    slug = models.SlugField(max_length=250, verbose_name='Przyjazny adres url')
    email = models.CharField(max_length=100, verbose_name='Adres e-mail')
    text = models.TextField(max_length=3000, verbose_name='Opis strony')
    kategoria = models.ForeignKey(Kategorie, verbose_name='Kategoria')
    data_publikacji = models.DateTimeField(blank=True, null=True, verbose_name='Data publikacji')

    class Meta:
        verbose_name='Strona www'
        verbose_name_plural = 'Strony www'

    def publikacja(self):
        self.data_publikacji=timezone.now()
        self.save()


    def __str__(self):
        return self.nazwa

urls.py

from django.conf.urls import url
from . import views

urlpatterns = [
    url(r'^strony$', views.widok_strony, name='widok_strony'),
    url(r'^$', views.widok_kategorii, name='widok_kategorii'),
]

views.py

from django.shortcuts import render
from .models import Witryna, Kategorie
from django.utils import timezone
#from django.db.models import Count


def widok_strony(request):
    firmy = Witryna.objects.filter(data_publikacji__lte=timezone.now()).order_by('data_publikacji')
    return render(request, 'firmy/widok_strony.html', {'firmy': firmy})

def widok_kategorii(request):
    kategorie = Kategorie.objects.all()
    wpisy_kat = Kategorie.objects.count()
    return render(request, 'firmy/widok_kategorii.html', {'kategorie': kategorie, 'wpisy_kat': wpisy_kat})

widok_kategorii.html

{% extends 'firmy/base.html' %}

{% block kategorie %}


{%  for kategoria in kategorie %}

<table>
<tr>
<th>
<a href="#">{{ kategoria.glowna|linebreaksbr }} </a>({{ wpisy_kat }}) 
</th>
</tr>
</table>
{%  endfor %}
{% endblock kategorie%}

widok_strony.html

{% extends 'firmy/base.html' %}

{% block firmy %}


{%  for firma in firmy %}
<div>
<img src="http://free.pagepeeker.com/v2/thumbs.php?size=s&url={{ firma.adres_www }}"/> 
<a href="">{{ firma.nazwa }}</a><p>
</div>
{%  endfor %}
{% endblock %}

base.html文件

{% include 'firmy/header.html' %}
<html>
<body>
<h4>Ostatnio dodane</h4>
{% block firmy %}

{% endblock %}
<h4>Kategorie</h4>
{% block kategorie %}
{% endblock %}

</body>
{% include 'firmy/footer.html' %}
</html>

當我嘗試運行localhost:8000時,base.html僅向我顯示widok_kategorii.html文件中的視圖。當然,當我將url更改為localhost:8000 / strony時,該頁面將完美加載。 但是我想在一頁base.html上有這兩個html文件

您是否嘗試過重命名塊,以便它們與您通過view.py傳遞的參數名稱不重疊。

我會嘗試以下方法:

widok_kategorii.html

{% extends 'firmy/base.html' %}

{% block content_kat %}
{% for kategoria in kategorie %}

<table>
<tr>
<th>
<a href="#">{{ kategoria.glowna|linebreaksbr }} </a>({{ wpisy_kat }}) 
</th>
</tr>
</table>
{%  endfor %}
{% endblock %}

widok_strony.html

{% extends 'firmy/base.html' %}

{% block content_firm %}

{%  for firma in firmy %}
<div>
<img src="http://free.pagepeeker.com/v2/thumbs.php?size=s&url={{ firma.adres_www }}"/> 
<a href="">{{ firma.nazwa }}</a><p>
</div>
{% endfor %}
{% endblock %}

base.html文件

{% include 'firmy/header.html' %}
<html>
<body>
<h4>Ostatnio dodane</h4>
{% block content_firm %}
{% endblock %}
<h4>Kategorie</h4>
{% block content_kat %}
{% endblock %}

</body>
{% include 'firmy/footer.html' %}
</html>

認識到您不會一次在同一頁面上獲得兩種內容。 如果您想將兩個內容都放在同一頁面上,則需要將視圖和html結合在一起。

我將執行以下操作:

views.py

def widok_strony_kategorii(request):
    firmy = Witryna.objects.filter(data_publikacji__lte=timezone.now()).order_by('data_publikacji')
    kategorie = Kategorie.objects.all()
    wpisy_kat = Kategorie.objects.count()
    return render(request, 'firmy/widok_strony_kategorii.html', {'firmy': firmy,'kategorie': kategorie, 'wpisy_kat': wpisy_kat})

FIRMY / widok_strony_kategorii.html

{% extends 'firmy/base.html' %}

{% block content_kat %}
{% for kategoria in kategorie %}

<table>
<tr>
<th>
<a href="#">{{ kategoria.glowna|linebreaksbr }} </a>({{ wpisy_kat }}) 
</th>
</tr>
</table>
{%  endfor %}
{% endblock %}

{% extends 'firmy/base.html' %}

{% block content_firm %}

{%  for firma in firmy %}
<div>
<img src="http://free.pagepeeker.com/v2/thumbs.php?size=s&url={{ firma.adres_www }}"/> 
<a href="">{{ firma.nazwa }}</a><p>
</div>
{% endfor %}
{% endblock %}

FIRMY / base.html文件

<<Same as the edited one above>>

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM