Probleme de șablon în django

M-am blocat la Scriefli vederi care fac efectiv ceva . Am modificat opiniile mele pentru a fi următoarele:

from django.template import Context, loader
from polls.models import Poll
from django.http import HttpResponse

def index(request):
    latest_poll_list = Poll.objects.all().order_by('-pub_date')[:5]
    t = loader.get_template('polls/index.html')
    c = Context({
        'latest_poll_list': latest_poll_list,
    })
    return HttpResponse(t.render(c))

def detail(request, poll_id):
    return HttpResponse("You're looking at poll %s." % poll_id)

def results(request, poll_id):
    return HttpResponse("You're looking at the results of the poll %s." % poll_id)

def vote(request, poll_id):
    return HttpResponse("You're voting on poll %s." % poll_id)

Am făcut ca directorul meu de șabloane să fie /home/stanley/mytemplates/polls/ conform instrucțiunilor din tutorial și aceasta este linia relevantă care se potrivește în settings.py :

TEMPLATE_DIRS = (
    "/home/stanley/mytemplates/",
    # Put strings here, like "/home/html/django_templates" or "C:/www/django/templates".
    # Always use forward slashes, even on Windows.
    # Don't forget to use absolute paths, not relative paths.
)

Totuși, în browser-ul meu, după rularea serverului în localhost ( http://127.0.0.1:8000/polls/index.html ), văd încă următorul mesaj de eroare:

Page not found (404)
Request Method: GET
Request URL:    http://localhost:8000/polls/index.html
Using the URLconf defined in mysite.urls, Django tried these URL patterns, in this order:
^polls/$
^polls/(?P\d+)/$
^polls/(?P\d+)/results/$
^polls/(?P\d+)/vote/$
^admin/
^admin/
The current URL, polls/index.html, didn't match any of these.
You're seeing this error because you have DEBUG = True in your Django settings file. Change that to False, and Django will display a standard 404 page.

Fac ceva în neregulă cu codul sau fișierele mele, dar nu pot să înțeleg exact ce anume. Vreo idee?

Vă mulțumim anticipat pentru sugestiile dvs.!

0
Ce se întâmplă dacă încercați să mergeți la http://127.0.0.1:8000/polls/ (lăsați dezactivat index.html)?
adăugat autor jozzas, sursa

1 răspunsuri

Adresa URL pentru afișarea indexului este /polls/, nu /polls/index.html .

url(r'^polls/$', 'polls.views.index'),

Dacă doriți să funcționeze /polls/index.html, trebuie să adăugați un model url pentru acesta, de exemplu:

url(r'^/polls/index.html', 'polls.views.index'),

Cu toate acestea, probabil că nu doriți să faceți asta. Unul dintre lucrurile drăguțe despre Django este că puteți defini url-urile în mod independent de vizualizări și șabloane, astfel încât să nu aveți nevoie de urlări "crufty" care se termină în .html .

3
adăugat
Intr-adevar. Am avut un client cu câțiva ani în urmă, care a insistat că totul a trebuit să fie titlu-slug și se termină în .html . O mare capacitate de a gestiona, mai ales atunci când au început să schimbe/corectarea titlurilor și trebuia să urmărim toate redresările de 301.
adăugat autor Peter Rowell, sursa
Python România
Python România
100 participanți

Comunitatea pasionaților de Python din România.