2013-03-28 19 views
5

Ich verwende derzeit Django 1.5 und kann nicht herausfinden, wie man eine einfache HTML-Seite anzeigt. Ich habe über klassenbasierte Ansichten gelesen, bin mir aber nicht sicher, ob ich das machen möchte.Anzeigen einfacher HTML-Seiten DJango

Ich versuche, eine einfache index.html-Seite anzuzeigen, aber nach Meinung einiger Beispiele, die ich gesehen habe ich diesen Code in app/views.py setzen müssen:

def index(request): 
     template = loader.get_template("app/index.html") 
     return HttpResponse(template.render) 

Gibt es einen Grund Warum muss meine index.html-Seite mit der App meines Django-Projekts verknüpft werden? Für mich scheint es sinnvoller zu sein, eine index.html Seite dem Gesamtprojekt zuzuordnen.

Mehr auf den Punkt, mit diesem Code in meiner Datei views.py, was muss ich in meine urls.py setzen, um tatsächlich index.html?

EDIT:

Struktur des Django-Projekt:

webapp/ 
    myapp/ 
     __init__.py 
     models.py 
     tests.py 
     views.py 
    manage.py 
    project/ 
     __init__.py 
     settings.py 
     templates/ 
      index.html 
     urls.py 
     wsgi.py 
+1

Lesen das Django-Tutorial wäre viel hilfreicher. – Rohan

Antwort

7

urls.py

from django.conf.urls import patterns, url 
from app_name.views import * 

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

views.py

from django.views.generic import TemplateView 

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

Basierend auf @Ezequiel Bertti Antwort, entfernen app

from django.conf.urls import patterns 
from django.views.generic import TemplateView 

urlpatterns = patterns('', 
    (r'^index.html', TemplateView.as_view(template_name="index.html")), 
) 

Ihre index.html Store in sein müssen Vorlagenordner

webapp/ 
    myapp/ 
     __init__.py 
     models.py 
     tests.py 
     views.py 
     templates/  <---add 
      index.html <---add 
    manage.py 
    project/ 
     __init__.py 
     settings.py 
     templates/  <---remove 
      index.html <---remove 
     urls.py 
     wsgi.py 
+0

Catherine, ich erhalte einen Syntaxfehler mit "name = 'index'" in urls.py. Bist du sicher, dass es nicht template_name oder etwas anderes ist? Vielen Dank! –

+0

jetzt gibt es mir nur einen TemplateNostexist Fehler. Gibt es etwas Besonderes an der index.html-Datei, die ich haben muss? Ich habe es gerade in meiner App/gerade, aber es scheint nicht zu wissen, was/wo es ist? –

+0

hmmm Ich hatte das eigentlich schon probiert und habe das selbe Problem damit im "templates" -Verzeichnis bekommen. –

4

Sie eine GenericView von django Kern verwenden:

from django.conf.urls import patterns 
from django.views.generic import TemplateView 

urlpatterns = patterns('', 
    (r'^index.html', TemplateView.as_view(template_name="index.html")), 
) 
+0

Ich bekomme immer einen Fehler "TemplateDoesNoteExist", wenn ich die Dinge auf diese Weise ausführen ... –

+0

Wenn Sie "TemplateDoesNoteExist" Fehler erhalten, dann versuchen Sie, indem Sie die Datei settings.py Ihres Projekts, aktualisieren Sie TEMPLATE -> DIRS zu Ihrem Dateipfad, Sie müssen angeben, wo sich der Templates-Ordner befindet – d1jhoni1b

0

Stellen Sie sicher, dass Sie haben den Pfad in setting.py konfiguriert. Wahrscheinlich löst es TemplateDoesNoteExist Fehler auf.

Sie können die folgende in settings.py platzieren.

SETTINGS_PATH = os.path.normpath (os.path.dirname (Datei))

TEMPLATE_DIRS = ( os.path.join (SETTINGS_PATH, 'Vorlagen'), )

Verwandte Themen