2017-08-30 1 views
1

So lerne ich gerade, Django zu benutzen, und ich frage mich, wie man Teile der Funktionalität richtig aufspaltet, während es noch auf der Hauptseite angezeigt wird.Wie man mehrere Anwendungen auf der Hauptseite richtig rendert

Zum Beispiel möchte ich die Kopfzeile + Navigation, einen Kalender und aktuelle Blogartikel auf der Hauptindexseite.
Auf der Artikelseite würde ich zum Beispiel die Kopfzeile + nav, den Kalender und einen einzelnen Artikel mit einem Kommentarabschnitt haben.

Jetzt lesen die Tutorials, wenn ich sie richtig verstehe, würde ich die Funktionalität in eine Header-App, eine Kalender-App und die Blog-App selbst teilen, während es zusammen mit einer Kern-App kleben.

Aber was ich nicht verstehe ist, wie Apps/andere Ansichten in der Haupt-App gerendert werden. Alle Möglichkeiten, die ich gefunden habe, spezifizieren nur Vorlagen selbst oder sehen sehr hacky aus, also scheint das anscheinend nicht der übliche Weg zu sein.

Antwort

0

So gibt es mehrere Ansichten sind Arbeit hier:

1. Die Ansichten, die Sie

2. Ansicht zeigen möchten, dass die Seite machen wird, alle Ansichten angezeigt wird (diese nennen wir die ‚Hauptansicht‘.

der erste Schritt ist, alle anderen Ansichten/Modelle in die views.py Datei zu importieren, die die Hauptansicht in residiert.

from blog.models import Post 
from calendar.models import Calendar 

Jetzt c Sie Bearbeiten Sie Ihre Hauptansicht, um auf diese Daten zuzugreifen. Zum Beispiel:

class Mainview(TemplateView): 
    template_name = 'app/homepage.html' 

    def get_context_data(self, **kwargs): 
     #This will only show the latest post 
     data['posts'] = Post.objects.all().order_by('-id')[:1] 
     data['calendar'] = Calendar.objects.all() 
     return data 

Jetzt können Sie die Daten aus den anderen Anwendungen in der Vorlage acces die {{}} Tags verwenden, zum Beispiel - Sie so etwas tun könnte:

{% for post object in post %} 
    {{ post.title }} 
    {{ post.content}} 
{% endfor %} 
Verwandte Themen