django 呈现一个空白页面

Posted

技术标签:

【中文标题】django 呈现一个空白页面【英文标题】:django renders a blank page 【发布时间】:2013-03-22 02:40:43 【问题描述】:

首先,我想承认,我是 Django 的新手。我正在尽可能地学习。我正在阅读一本名为“Beginning Django E-Commerce”的书。在不希望侵犯版权的情况下,也许你们可以发现我哪里出错了。 我正在使用 Django 1.4.3,我正在使用的书可能是为 Django 1 编写的,也许是 1.1,但是这里有。

我的 base.html

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "XHTML1-s.dtd" >
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    <title>% block title %% if page_title % page_title  - % endif %
             site_name % endblock %</title>
    <meta name="keywords" content=" meta_keywords " />
    <meta name="description" content=" meta_description " />
</head>
<body>
    % block site_wrapper %% endblock %
</body>
</html>

我的目录.html:

% extends "base.html" %

% block site_wrapper %
<div id="main">
    <a href="#content" class="skip_link">Skip to main content</a>
    <div id="banner">
            <div class="bannerIEPadder">
                    <div class="cart_box">
                            [link to cart here]
                    </div>
                    Modern Musician
            </div>
    </div>
    <div id="navigation">
            <div class="navIEPadder">
                    [navigation here]
            </div>
    </div>
    <div id="middle">
            <div id="sidebar">
                    <div class="sidebarIEPadder">
                            [search box here]
                    <br />
                            [category listing here]
                    </div>
            </div>
            <div id="content">
                    <a name=”content”></a>
                    <div class="contentIEPadder">
                            % block content %% endblock %
                    </div>
            </div>
    </div>
    <div id="footer">
            <div class="footerIEPadder">
                    [footer here]
            </div>
    </div>
</div>
% endblock %

我的 index.html:

% extends "catalog.html" %

% block content %
    <h2>Welcome!</h2>
% endblock %

所有这些文件都存储在模板目录中。此时的书建议我运行以下命令:

python manage.py startapp preview

并调整我的 urls.py:

urlpatterns = 模式('', … (r'^catalog/$', 'preview.views.home'), )

调整预览目录下的views.py:

from django.shortcuts import render_to_response

def home(request):
  return render_to_response("index.html")

然后你应该能够看到一个页面,上面写着:

跳到主要内容 [此处链接到购物车] 现代音乐家 [这里导航] [这里的搜索框] [此处列出的类别] 欢迎! [此处为页脚]

但是,我得到的只是一个空白页。谁能弄清楚为什么? (这本书可能只是过时了)当我查看空白页的来源时。

这实际上是 base.html 的空白渲染。在开发服务器中,我没有错误:

python manage.py runserver localhost:8000      (wd: ~/websites/ecomstore) 
Validating models... 0 errors found Django version 1.4.3, using settings 'ecomstore.settings' 
Development server is running at http://www.localhost.com:8000/ Quit the server with CONTROL-C. 
[01/Apr/2013 02:13:06] "GET /catalog/ HTTP/1.1" 200 352 
[01/Apr/2013 02:13:08] "GET /catalog/ HTTP/1.1" 200 352 
[01/Apr/2013 02:13:09] "GET /catalog/ HTTP/1.1" 200 352 
[01/Apr/2013 02:33:33] "GET /catalog/ HTTP/1.1" 200 352

full list of my steps, please see this site

【问题讨论】:

页面源也是空的吗? 你为什么要折磨自己? Django 有一个优秀的初学者教程来帮助你理解基础知识...docs.djangoproject.com/en/1.4/intro/tutorial01 @Ngenator 啊,我已经完成了教程。 :-) 这本书讲授了如何建立网上商店。 在我的电脑上运行它,工作正常。确切的代码发布有问题。该代码适用于 1.4 BTW。 也许您可以添加一个答案,说明这是一个错字,在按下紧急按钮之前应该先检查这些内容。将帮助未来的访客。 【参考方案1】:

尝试在 catalog.htmlbase.html 中插入 % block content % 您的问题可能是因为您继承自 catalog 并且在那些模板上没有这个 block 用于渲染。

【讨论】:

【参考方案2】:

问题的答案是人为错误。我在代码中有一个类型,很可能是间距问题(遗憾的是我没有使用 eclipse)。这个答案在发布之前仔细阅读并仔细检查所有内容,否则您将不得不非常懊悔(像我一样!)。我要去躲在我从下面爬出来的 django 岩石下! 编码愉快!

【讨论】:

【参考方案3】:

首先你应该告诉 django 你制作的应用程序确实存在。 转到 setting.py 并转到 Installed_app 并在其中包含您的应用,如下所示:

 INSTALLED_APPS = [
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',
    'preview.apps.PreviewConfig',
]

然后你必须进入主目录并运行 urls.py 并添加这个 url:

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

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

在此之后,您应该在预览文件夹中创建一个 python 文件并将其命名为 urls.py。您必须在那里为您的预览应用定义您的 url 模式。

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


urlpatterns = [
url(r'^$', IndexView.as_view()),
]

最后一步是您必须定义视图。为了做到这一点,请转到 previews 文件夹中的 views.py 并运行 views.py

from django.views.generic import TemplateView

class IndexView(TemplateView):
  template_name = "index.html"

【讨论】:

以上是关于django 呈现一个空白页面的主要内容,如果未能解决你的问题,请参考以下文章

大型 HTML 显示空白页面(WSOD - 白屏死机) - PHP

PHP代码错误导致PHP返回页面空白

谷歌正在显示空白页 - Reactjs

PHP返回页面空白原因分析-Nginx+PHP

Django中的散景图返回空白页

Facelets:页面未呈现