Я пытаюсь перейти к классам в Django после обновления, и у меня есть два вопроса относительно этого. Это мой код, упрощена:Проблемы при изменении представлений класса в Django
# urls.py
urlpatterns += patterns('project.app.views',
('^$', 'index'), # Old style
url(r'^test/$', SearchView.as_view()), # New style
)
# views.py
class SearchView(TemplateView):
template_name = 'search.html'
def get_context_data(self, **kwargs):
messages.success(request, 'test')
return {'search_string': 'Test'}
Когда я запускаю это я первый получаю ошибку name 'SearchView' is not defined
. Кто-нибудь знает, почему?
Попытка пропустить, что я добавляю from project.app.views import SearchView
, который является уродливым, а не тем, как я хочу, чтобы он работал, но эй, я стараюсь посмотреть, смогу ли я заставить остальных работать. Затем я получаю global name 'request' is not defined
из-за messages
. Это имеет смысл, но как мне получить объект запроса здесь?
Так что я хотел бы знать: как мне заставить представления работать по назначению и как использовать сообщения в get_context_data()
?
Спасибо, я, должно быть, пропустил этот запрос сам. Я думал, что Django найдет мой класс SearchView из «project.app.views» в шаблонах, как и со старыми функциями стиля. Мне кажется странным, что это не так. – olofom
Без импорта ваш оригинальный 'urls.py' недействителен Python. Не много Джанго может это сделать. –