2017-08-07 166 views
0

我有執行html視圖的問題。我有base.html不顯示其他文件的子視圖。任何人都可以幫助我做錯什麼?下面是我的文件: models.pyDjango不能正常工作

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> 

當我嘗試到本地主機上運行:8000 base.html文件顯示我只從widok_kategorii視圖.html文件。當然,當我將url更改爲localhost:8000/strony時,該頁面將完全加載。但我想在這一頁上有這兩個html文件base.html

+0

是否要在一個頁面上顯示兩個html文件(widok_strony.html&widok_kategorie.html)? –

+0

你可能沒有任何'Kategorie'對象。 – marcusshep

+0

Saschin是的。我想顯示一個頁面上兩個HTML文件 – killerbees

回答

0

您是否嘗試過重命名塊,以便它們不與您通過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> 

意識到您不會同時在同一頁面上獲取兩個內容。如果您希望在同一頁面上顯示兩種內容,則需要將視圖和htmls結合起來。

我會做到以下幾點:

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 /基地。html

<<Same as the edited one above>> 
+0

非常感謝Jasol。我會嘗試這個解決方案。你對urls.py有什麼看法?在這種情況下我'有義務改變URLPATTERN或離開它是這樣的:URL模式= [ URL(R '^ $ strony',views.widok_strony,名稱= 'widok_strony'), URL(R '^ $', views.widok_kategorii,名稱=「widok_kategorii」), ] – killerbees

+0

如果你要在這兩個視圖一起組合成功能widok_strony_kategorii,那麼你就需要改變urls.py以及(忘記添加到我的文章)。 urls.py urlpatterns = [ url(r'^ $',views.widok_strony_kategorii,name ='widok_strony_kategorii') ] – Jasol