2017-09-22 1 views
-1

Ich bin derzeit eine Homepage für Django erstellen versucht, aber wenn ich es testen, es zeigt mir nur eine leere Seite mit nichts drauf. Das habe ich bisher. Erstens ist meine URL Seite von mysite:Homepage in Django funktioniert nicht

from django.conf.urls import url, include 
from django.contrib import admin 
from django.conf import settings 
from django.conf.urls.static import static 

urlpatterns = [ 
    url(r'^admin/', admin.site.urls), 
    url(r'',include('firstapp.urls')), 
] 

und meine url Seite von firstapp:

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

urlpatterns = [ 
    url(r'^$', HomePage.as_view(), name='home'), 
] 

diese meine Ansichten Seite lautet:

from django.shortcuts import render 
from django.views.generic import TemplateView 

class HomePage(TemplateView): 
    template_name = 'home/home.html' 

    def home(request): 
     return render(request, self.template_name) 

dies der base.html ist, die sich to home.html

{% load staticfiles %} 

<!DOCTYPE html> 
<html> 
    <head> 
<meta charset="UTF-8"> 
<title>Home</title> 
<link rel='stylesheet' href='{% static "css/base.css" %}'/> 
    </head> 
<html> 
<p>{{ variable }}</p> 
<script src= '{% static "js/base.js" %}'></script> 
</body> 
</html> 

Und endlich home.html selbst.

Nun, wenn es funktioniert, sollte ich sehen "Testing Home" ... aber ... ich sehe nichts. Ich bekomme nur eine leere weiße Seite. Irgendeine Idee, warum das passiert?

+0

Es gibt keinen Block in Ihrer Basisvorlage definiert. –

+0

Ihre 'template_name' Ihrer Ansicht nach wird in ein Unterverzeichnis zeigt, stellen Sie sicher, dass Sie das' home' Verzeichnis im –

+0

Hinweis Vorlagenordner erstellt haben, dass 'Haus()' Methode in Ihrer Ansicht wird nie aufgerufen. Du brauchst es trotzdem nicht; Das Rendern der Vorlage ist die Standardaktion einer TemplateView. Sie sollten diese Methode entfernen. –

Antwort

3

Ihre base.html hat keine {% block body %} irgendwo definiert. Sie müssen Blöcke in der Vorlage definieren, die Sie erweitern, andernfalls haben Sie nichts in der erweiterten Vorlage zu überschreiben.

base.html

<html> 
    <body> 
    <p>{{ variable }}</p> 

    {% block body %}{% endblock %} 

    <script src= '{% static "js/base.js" %}'></script> 
    </body> 
</html> 

Hinweis: Ich reparierte auch Ihre Öffnung <body> Tag, die Sie fälschlicherweise als <html> hatte man mit zwei <html> öffnenden Tags in der Vorlage zu verlassen.