Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/20.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python Django模板语法错误_Python_Django - Fatal编程技术网

Python Django模板语法错误

Python Django模板语法错误,python,django,Python,Django,我正在学习Django教程,当我试图访问它时,突然发现一个TemplateSyntaxError TemplateSyntaxError位于/admin/ 渲染时捕获ViewDoesNotExist:在模块polls.views中尝试了结果。错误为:“模块”对象没有属性“结果” 它突出了这一行: {%url'django admindocs docroot'作为docsroot%} 在我进入教程的第3部分并弄乱了URL之前,管理页面的工作非常有魅力,尽管我完全按照他们说的那样做,所以我怀疑这是问

我正在学习Django教程,当我试图访问它时,突然发现一个TemplateSyntaxError

TemplateSyntaxError位于/admin/

渲染时捕获ViewDoesNotExist:在模块polls.views中尝试了结果。错误为:“模块”对象没有属性“结果”

它突出了这一行: {%url'django admindocs docroot'作为docsroot%}

在我进入教程的第3部分并弄乱了URL之前,管理页面的工作非常有魅力,尽管我完全按照他们说的那样做,所以我怀疑这是问题所在

URL.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.http import HttpResponse
from polls.models import Poll
from django.template import Context, loader

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 vote(request, poll_id):
    return HttpResponse("You're voting on poll %s." % poll_id)
这就是你所需要的。忽略
模板语法错误
,它与模板根本不相关。Django告诉你你没有这个:

def results(request):
    # do something
在your views.py中。当您开始编写URL并引用其中实际不存在的函数时,您将在管理员之外收到
ViewDoesNotExist
错误,因此请确保在编写过程中,您要么确保您拥有只返回基本200的存根函数,要么注释掉这些URL,直到需要它们为止

从技术上讲,这是python错误的扩展。如果您运行:

$ python manage.py shell
>>> from poll import views
x = views.results
你会得到一份工作

既然您问了为什么,如果您查看
Django/core/urlsolvers.py
中的内容,您会看到:

_callable_cache = {} # Maps view and url pattern names to their view functions.
因此,基本上,到函数的视图映射(URL或其他)的缓存是以hashmap(字典)的形式进行的。这是由以下函数构造的:

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)

它计算每个回调以检查它是否存在(换行符是我的)。

post-you poll/views.py文件。这似乎就是错误isI向views.py添加def results的地方,它起了作用,但为什么呢?django就不能忽略它吗?在django有些事情有时候就是没有意义。嗯,它有完美的意义。当有人访问URL/polls/1234/results/时,将从your views.py调用函数“results”,并将参数id传递给它。然后,该函数呈现模板并将其返回给用户。这是Django的工作方式,但我不访问结果。您告诉Django,当您将视图放在URL.py中时,它是存在的。当有人检查网页时,Django会检查您的所有URL,因此它会查找该视图(您尚未创建)谢谢!现在我明白了为什么它没有被忽视。
_callable_cache = {} # Maps view and url pattern names to their view functions.
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)