я делаю учебник Django здесь: http://docs.djangoproject.com/en/1.2/intro/tutorial03/Нужна помощь с Джанго учебник
Мои TEMPLATE_DIRS в settings.py выглядит следующим образом:
TEMPLATE_DIRS = (
"/webapp2/templates/"
"/webapp2/templates/polls"
# 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.
)
Мой urls.py выглядит следующим образом:
from django.conf.urls.defaults import *
from django.contrib import admin
admin.autodiscover()
urlpatterns = patterns('',
(r'^polls/$', 'polls.views.index'),
(r'^polls/(?P<poll_id>\d+)/$', 'polls.views.detail'),
(r'^polls/(?P<poll_id>\d+)/results/$', 'polls.views.results'),
(r'^polls/(?P<poll_id>\d+)/vote/$', 'polls.views.vote'),
(r'^admin/', include(admin.site.urls)),
)
Мой views.py выглядит следующим образом:
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('c:/webapp2/templates/polls/index.html')
c = Context({
'latest_poll_list': latest_poll_list,
})
return HttpResponse(t.render(c))
Я думаю, что у меня неправильный путь к шаблону, потому что, когда я упрощаю код views.py на что-то вроде этого, я могу загрузить страницу.
from django.http import HttpResponse
def index(request):
return HttpResponse("Hello, world. You're at the poll index.")
Мой файл шаблона индекса находится в C: /webapp2/templates/polls/index.html. Что я делаю не так?
This is the error I am getting:
Traceback (most recent call last):
File "C:\Python27\lib\site-packages\django\core\servers\basehttp.py", line 280, in run
self.result = application(self.environ, self.start_response)
File "C:\Python27\lib\site-packages\django\core\servers\basehttp.py", line 674, in __call__
return self.application(environ, start_response)
File "C:\Python27\lib\site-packages\django\core\handlers\wsgi.py", line 241, in __call__
response = self.get_response(request)
File "C:\Python27\lib\site-packages\django\core\handlers\base.py", line 141, in get_response
return self.handle_uncaught_exception(request, resolver, sys.exc_info())
File "C:\Python27\lib\site-packages\django\core\handlers\base.py", line 180, in handle_uncaught_exception
return callback(request, **param_dict)
File "C:\Python27\lib\site-packages\django\utils\decorators.py", line 76, in _wrapped_view
response = view_func(request, *args, **kwargs)
File "C:\Python27\lib\site-packages\django\views\defaults.py", line 30, in server_error
t = loader.get_template(template_name) # You need to create a 500.html template.
File "C:\Python27\lib\site-packages\django\template\loader.py", line 157, in get_template
template, origin = find_template(template_name)
File "C:\Python27\lib\site-packages\django\template\loader.py", line 138, in find_template
raise TemplateDoesNotExist(name)
TemplateDoesNotExist: 500.html
Я попытался добавить эту функцию и сменить TEMPLATE_DIRS, но она все еще не работает. Итак, мне нужно поставить запятую между ''/webapp2/templates/"' и '"/webapp2/templates/polls "'. В комментариях сказано оставить его как строку. В любом случае, я пробовал с запятыми, и это все еще не сработало. – super9
@Nai: Конечно, вам нужны запятые. И поскольку вы находитесь в Windows, путь должен начинаться с «C: /» (хотя это не имеет значения для Python). Теперь, когда вы отредактировали свой вопрос, очевидно, что вам не хватает шаблона «500.html».Вы можете использовать 'DEBUG = True' (который использует шаблон трассировки по умолчанию при возникновении ошибки) или создать такой файл в каталоге шаблонов. Я предполагаю, что реальная проблема - это нечто иное - используйте сервер разработки и 'DEBUG = True', чтобы найти ошибку. – AndiDog
Хорошо, это была опечатка, но включение DEBUG помогло мне исправить ошибки. Благодаря! – super9