2017-08-07 168 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