首先,我想承认,我是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>
我的catalog.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 %}
所有这些文件都存储在templates目录中。这本书建议我运行以下命令:
python manage.py startapp preview
并调整我的urls.py:
urlpatterns = patterns('', ... (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
答案 0 :(得分:0)
尝试在 catalog.html 或 base.html 中插入{%block content%},问题是因为您继承自目录&lt;基础,并且这些模板没有此阻止进行渲染。
答案 1 :(得分:0)
答案是问题是人为错误。我在代码中有一个类型,很可能是间距问题(遗憾的是我没有使用eclipse)。这个问题的答案很难在发布前仔细检查,或者你必须非常懊悔(像我一样!)。我要躲在我从下面爬出的django岩石下面! 快乐的编码!
答案 2 :(得分:0)
首先你应该告诉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"