Джанго отображает пустую страницу
Во-первых, я хотел бы признать, что я совершенно новичок в Джанго. Я учусь как можно лучше. Я работаю над книгой под названием "Начало электронной коммерции Django". Не желая нарушать право копирования, возможно, вы, ребята, сможете определить, где я ошибся. Я использую 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 %}
Все эти файлы хранятся в каталоге шаблонов. Книга на данный момент предлагает мне выполнить следующую команду:
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")
Тогда вы сможете увидеть страницу с надписью:
Перейти к основному содержанию [ссылка на корзину здесь] Modern Musician [навигация здесь] [поле поиска здесь] [список категорий здесь] Добро пожаловать! [нижний колонтитул здесь]
Тем не менее, все, что я получаю, это пустая страница. Кто-нибудь может понять, почему? (возможно, книга просто устарела) Когда я просматриваю источник пустой страницы.
который фактически пустой рендеринг 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
4 ответа
Вы должны добавить
{% block content %}
на base.html
Например, этот код 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 %}
{% block content %}{% endblock %} <!-- you can move this line to first block -->
</body>
</html>
Ответ на этот вопрос - человеческая ошибка. У меня был тип в коде, скорее всего, проблема с пробелами (к сожалению, я не использую затмение). Ответ на этот вопрос читайте внимательно и дважды проверяйте все перед публикацией, иначе вам придется быть очень сокрушенным (как я!). Я спрятался под скалой Джанго, которую я выполз из-под! Удачного кодирования!
Попробуйте вставить {% block content %} в ваш catalog.html или base.html, ваша проблема может быть связана с тем, что вы наследуетесь от catalog
Сначала вы должны сообщить 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 patten для вашего приложения предварительного просмотра.
from django.conf.urls import url
from . import views
urlpatterns = [
url(r'^$', IndexView.as_view()),
]
последний шаг - вы должны определить views. Для этого перейдите в views.py в папке предварительного просмотра и запустите views.py.
from django.views.generic import TemplateView
class IndexView(TemplateView):
template_name = "index.html"