2013-04-01 20 views
5

Po pierwsze, chciałbym przyznać, jestem całkowicie nowy w Django. Uczę się najlepiej jak potrafię. Pracuję nad książką "Początek Django E-Commerce". Nie chcąc naruszać praw autorskich, być może zauważysz, że popełniłem błąd. Używam Django 1.4.3, książka, której używam została prawdopodobnie napisana dla Django 1, może 1.1, ale tutaj jest.django renderuje pustą stronę

mój 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> 

mój 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 %} 

Moja index.html:

{% extends "catalog.html" %} 

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

Wszystkie te pliki są przechowywane w katalog szablonów. Książka w tym momencie proponuje uruchomić następujące polecenie:

python manage.py startapp preview 

i dostosować moje urls.py:

urlpatterns = patterns ('', ... (r '^ Katalog/$' 'preview.views.home'))

dostosować views.py w katalogu podglądu

from django.shortcuts import render_to_response 

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

Następnie powinieneś być w stanie zobaczyć stronę, która mówi:

Przejdź do głównej zawartości [link koszyk tutaj] Nowoczesne Muzyk [nawigacja tutaj] [Search box tutaj] [kategoria wymieniając tutaj ] Witamy! [stopka tutaj]

Jednak wszystko, co dostaję, to pusta strona. Czy ktokolwiek może zrozumieć dlaczego? (możliwe jest, że książka jest po prostu nieaktualna) Kiedy wyświetlam źródło pustej strony.

co jest w rzeczywistości pustym renderowaniem pliku base.html. W serwerze rozwoju, nie mam żadnych błędów:

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

+0

jest źródłem strona pusta też? – wRAR

+1

Dlaczego się torturujesz? Django ma doskonały tutorial dla początkujących, który pomoże ci zrozumieć podstawy ... https://docs.djangoproject.com/en/1.4/intro/tutorial01/ – Ngenator

+0

@Ngenator Ah, Ukończyłem samouczek. :-) Ta książka uczy, jak budować sklepy internetowe. – LeeO

Odpowiedz

0

Spróbuj wstawić {% Zawartość blok%} W catalog.html lub base.html problem byłby, bo jesteś dziedzicząc z katalog < podstawa i na tych szablonach nie ma tego bloku dla renderowania.

0

Odpowiedź na to pytanie to błąd ludzki. Miałem typ kodu, najprawdopodobniej problem z odstępem (niestety nie używam zaćmienia). Odpowiedź na to przeczytać twardo i dokładnie sprawdzić wszystko przed wysłaniem, albo będziesz musiał być bardzo skruszony (jak ja!). Muszę się schować pod skałą django, którą wyczołgałem! Szczęśliwe kodowanie!

0

Najpierw powinieneś powiedzieć django, że twoja aplikacja faktycznie istnieje. iść do setting.py i przejdź do Installed_app i obejmują swoją aplikację tam tak:

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

następnie należy udać się do katalogu głównego i uruchom urls.py i dodać ten 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), 
] 

po to powinieneś zrobić plik Pythona w folderze podglądu i nazwać go urls.py.and tam musisz zdefiniować swój adres URL dla aplikacji do podglądu.

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


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

końcowy etap to należy zdefiniować widoki .in Aby to zrobić przejdź do views.py w zapowiedzi folderu i uruchom views.py

from django.views.generic import TemplateView 

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