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
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'),
]
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 = Witryna.objects.annotate(cnt_kategoria=Count('kategoria'))
return render(request, 'firmy/widok_kategorii.html', {'kategorie': kategorie, 'wpisy_kat': wpisy_kat})
{% extends 'firmy/index.html' %}
{% block kategorie %}
{% for kategoria in kategorie %}
<table>
<tr>
<td>
<a href="#">{{ kategoria.glowna|linebreaksbr }} </a>
{% for wpis in wpisy_kat %}
({{ wpis.id }})
{% endfor %}
</td>
</tr>
</table>
{% endfor %}
{% endblock %}
{% extends 'firmy/index.html' %}
{% block firma %}
{% 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 %}
{% include 'firmy/header.html' %}
<html>
<body>
<h3>Ostatnio dodane</h3>
{% block firma %}
{% endblock %}
<h3>Kategorie</h3>
{% block kategorie %}
{% endblock %}
</body>
{% include 'firmy/footer.html' %}
</html>
W trzecim argumencie funkcji render wewnątrz funkcji widoku widok_kategorii powinieneś dodać klucz firmy. W tej chwili go nie przekazujesz, dlatego nie wyświetlają się dane firm.
--
Otrzymujesz tę wiadomość, bo subskrybujesz grupę „django-pl - grupa polskiej społeczności Django” w Grupach dyskusyjnych Google.
Aby anulować subskrypcję tej grupy i przestać otrzymywać od niej wiadomości, wyślij e-maila na django-pl+...@googlegroups.com.
Aby opublikować wpis w tej grupie, wyślij e-maila na djan...@googlegroups.com.
Otwórz tę grupę na https://groups.google.com/group/django-pl.
Więcej opcji znajdziesz na https://groups.google.com/d/optout.
def widok_kategorii(request):
kategorie = Kategorie.objects.all() wpisy_kat =Witryna.objects.annotate(cnt_kategoria=Count('kategoria'))
firmy = Witryna.objects.filter(data_publikacji__lte=timezone.now()).order_by('data_publikacji')
return render(request,'firmy/widok_kategorii.html',{'kategorie': kategorie, 'wpisy_kat': wpisy_kat, 'firmy': firmy})
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()
firmy = Witryna.objects.filter(data_publikacji__lte=timezone.now()).order_by('data_publikacji')
wpisy_kat = Witryna.objects.annotate(cnt_kategoria=Count('kategoria'))
return render(request, 'firmy/widok_kategorii.html', {'kategorie': kategorie, 'wpisy_kat': wpisy_kat, 'firmy':firmy})Tutaj wprowadź kod...
Tak powinien wyglądać szablon widok_kategorii.html, aby wyświetlał to, co chcesz:
{% extends 'firmy/index.html' %}
{% block firma %}
{% 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 %}
{% block kategorie %}
{% for kategoria in kategorie %}
<table>
<tr>
<td>
<a href="#">{{ kategoria.glowna|linebreaksbr }} </a>
{% for wpis in wpisy_kat %}
({{ wpis.id }})
{% endfor %}
</td>
</tr>
</table>
{% endfor %}
{% endblock %}
W takim przypadku powinieneś użyć include'ów wewnątrz index.html w odpowiednich miejscach. A te małe szablony powinny zawierać tylko kod, który ma się znaleźć w wybranych miejscach.
Bloki (block) nie przydadzą się, bo one mają zastosowanie przy dziedziczeniu, a nie zawieraniu.
Maciek teraz wszystko jest jasne. W tym przypadku robię extends z jednego pliku na główny. Czy jest możliwość zrobienia takiej rzeczy jak: plik index.html jest plikiem strony głównej i na niej będą wyświetlane takie rzeczy jak: kategorie,ostatnio dodane,reklama itp. Chciałbym żeby to mi się wyświetliło w divach na stronie index. Czy w takim razie stosowanie extends ma tu zasadność czy bardziej include?
--
Otrzymujesz tę wiadomość, ponieważ subskrybujesz grupę dyskusyjną Google o nazwie „django-pl - grupa polskiej społeczności Django”.
Aby anulować subskrypcję tej grupy i przestać otrzymywać od niej wiadomości, wyślij e-maila na django-pl+...@googlegroups.com.
Aby zamieszczać posty w tej grupie, wyślij e-mail na adres djan...@googlegroups.com.
Odwiedź tę grupę na https://groups.google.com/group/django-pl