2017-09-22 22 views
-1

我正在嘗試爲Django創建一個主頁,但是當我測試它時,它只是向我顯示一個空白頁面,沒有任何內容。這是我迄今爲止所擁有的。首先是從mysite的我的網址頁面:從firstappDjango中的主頁無法正常工作

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')), 
] 

和我的網址頁面:

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

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

這是我的看法頁:

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) 

這是它擴展了base.html文件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> 

而且最後home.html本身。

{% extends 'base.html' %} 

{% block body %} 

<div class="container"> 
<p>Testing Home</p> 
</div> 

{% endblock %} 

現在,如果它的工作,我應該看到「測試首頁」......但是......我什麼都看不到。我只是得到一個空白頁。任何想法爲什麼發生這種情況?

+0

在您的基本模板中沒有定義塊。 –

+0

您的視圖中的'template_name'指向一個子目錄,請確保您已經在模板文件夾中創建了'home'目錄。 –

+0

請注意,視圖中的home()方法永遠不會被調用。無論如何你不需要它;渲染模板是TemplateView的默認操作。您應該刪除該方法。 –

回答

3

您的base.html沒有在其中的任何位置定義的{% block body %}。您需要在您要擴展的模板中定義塊,否則在擴展模板內無法覆蓋任何內容。

base.html文件

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

    {% block body %}{% endblock %} 

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

注:我也修正了自己的開放<body>標籤,它錯誤地作爲了<html>,讓你與你的模板2個<html>開始標籤。