Caught ViewDoesNotExist while rendering: Tried results in module polls.views.
Error was: 'module' object has no attribute 'results'
Это почти все, что вам нужно.Не обращайте внимания на TemplateSyntaxError
, это вообще не связано с шаблоном.Джанго говорит вам, что у вас этого нет:
def results(request):
# do something
В вашем views.py.Вы получите ViewDoesNotExist
ошибок вне администратора, когда начнете писать URL-адреса и ссылаться на функции, которые в них фактически не существуют, поэтому по мере продвижения убедитесь, что у вас либо есть такие функции-заглушки, которые просто возвращают базовые 200,или вы закомментируете эти URL до тех пор, пока они вам не понадобятся.
С технической точки зрения это расширение ошибки python.Если вы наберете:
$ python manage.py shell
>>> from poll import views
x = views.results
Вы получите AttributeError
.
Так как вы спросили почему, если вы посмотрите в Django/core/urlresolvers.py
, вы увидитестрока:
_callable_cache = {} # Maps view and url pattern names to their view functions.
Таким образом, в основном кэш отображений представлений (url или что-либо еще) к функциям создается в виде хэш-карты (словаря).Это строится с помощью этой функции:
def _get_callback(self):
if self._callback is not None:
return self._callback
try:
self._callback = get_callable(self._callback_str)
except ImportError, e:
mod_name, _ = get_mod_func(self._callback_str)
raise ViewDoesNotExist("Could not import %s. Error was: %s" % (
mod_name, str(e)))
except AttributeError, e:
mod_name, func_name = get_mod_func(self._callback_str)
raise ViewDoesNotExist("Tried %s in module %s. Error was: %s" % (
func_name, mod_name, str(e)))
return self._callback
callback = property(_get_callback)
, которая оценивает каждый обратный вызов, чтобы проверить, существует ли он (новые строки - мои).