首页 > 解决方案 > Django 教程第 3 部分

问题描述

我目前正在阅读 Django 教程第 3 部分(https://docs.djangoproject.com/en/3.0/intro/tutorial03/)的“编写实际做某事的视图”部分,但遇到了一个错误:

“/polls/ 处的模板语法错误”

“模板渲染期间出错”

“第 24 行的块标签无效:'<span'。您是否忘记注册或加载此标签?”

“http://127.0.0.1:8000/polls/”

这是我的views.py 代码:

from django.shortcuts import render
from django.http import HttpResponse
from .models import Question
from django.template import loader


def index(request):
    latest_question_list = Question.objects.order_by('-pub_date')[:5]
    context = {'latest_question_list': latest_question_list}
    return render(request,'polls/index.html',context)

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

def results(request, question_id):
    response = "You're looking at the results of question %s."
    return HttpResponse(response % question_id)

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

# Create your views here.

这是我的 urls.py 代码:

from django.urls import path

from . import views

app_name = 'polls'
urlpatterns = [
    # ex: /polls/
    path('', views.index, name='index'),
    # ex: /polls/5/
    path('<int:question_id>/', views.detail, name='detail'),
    # ex: /polls/5/results/
    path('<int:question_id>/results/', views.results, name='results'),
    # ex: /polls/5/vote/
    path('<int:question_id>/vote/', views.vote, name='vote'),
]

这是我在 polls/templates/polls/index.html 中的模板代码

{% if latest_question_list %}

    <ul>

    {% for question in latest_question_list %}

        <li><a href="/polls/{{ question.id }}/">{{ question.question_text }}</a></li>

    {% endfor %}

    </ul>

{% else %}

    <p>No polls are available.</p>

{% endif %}

这是完整的回溯:

Environment:


Request Method: GET
Request URL: http://127.0.0.1:8000/polls/

Django Version: 3.0.8
Python Version: 3.8.0
Installed Applications:
['polls.apps.PollsConfig',
 'django.contrib.admin',
 'django.contrib.auth',
 'django.contrib.contenttypes',
 'django.contrib.sessions',
 'django.contrib.messages',
 'django.contrib.staticfiles']
Installed Middleware:
['django.middleware.security.SecurityMiddleware',
 'django.contrib.sessions.middleware.SessionMiddleware',
 'django.middleware.common.CommonMiddleware',
 'django.middleware.csrf.CsrfViewMiddleware',
 'django.contrib.auth.middleware.AuthenticationMiddleware',
 'django.contrib.messages.middleware.MessageMiddleware',
 'django.middleware.clickjacking.XFrameOptionsMiddleware']


Template error:
In template /Users/XXXX/Documents/Programming/PycharmProjects/mysite/polls/templates/polls/index.html, error at line 24
   Invalid block tag on line 24: '</span><span'. Did you forget to register or load this tag?
   14 :     span.s1 {font-kerning: none; color: #ad6705; -webkit-text-stroke: 0px #ad6705}
   15 :     span.s2 {font-kerning: none; color: #0e3c26; -webkit-text-stroke: 0px #0e3c26}
   16 :     span.s3 {font-kerning: none; color: #0f7001; -webkit-text-stroke: 0px #0f7001}
   17 :     span.s4 {font-kerning: none}
   18 :     span.s5 {font-kerning: none; color: #6a801f; -webkit-text-stroke: 0px #6a801f}
   19 :     span.s6 {font-kerning: none; color: #535353; -webkit-text-stroke: 0px #535353}
   20 :     span.s7 {font-kerning: none; color: #a90e1a; -webkit-text-stroke: 0px #a90e1a}
   21 :   </style>
   22 : </head>
   23 : <body>
   24 : <p class="p1"><span class="s1"> {%</span><span class="s2"> </span><span class="s3"><b>if</b></span><span class="s2"> </span><span class="s4">latest_question_list</span><span class="s2"> </span><span class="s1">%} </span></p>
   25 : <p class="p2"><span class="s4"><span class="Apple-converted-space">    </span>&lt;</span><span class="s3"><b>ul</b></span><span class="s4">&gt;</span></p>
   26 : <p class="p1"><span class="s2"><span class="Apple-converted-space">    </span></span><span class="s1">{%</span><span class="s2"> </span><span class="s3"><b>for</b></span><span class="s2"> </span><span class="s4">question</span><span class="s2"> </span><span class="s3"><b>in</b></span><span class="s2"> </span><span class="s4">latest_question_list</span><span class="s2"> </span><span class="s1">%}</span></p>
   27 : <p class="p1"><span class="s2"><span class="Apple-converted-space">        </span>&lt;</span><span class="s3"><b>li</b></span><span class="s2">&gt;&lt;</span><span class="s3"><b>a</b></span><span class="s2"> </span><span class="s5">href</span><span class="s6">=</span><span class="s7">"/polls/</span><span class="s1">{{</span><span class="s2"> </span><span class="s4">question.id</span><span class="s2"> </span><span class="s1">}}</span><span class="s7">/"</span><span class="s2">&gt;</span><span class="s1">{{</span><span class="s2"> </span><span class="s4">question.question_text</span><span class="s2"> </span><span class="s1">}}</span><span class="s2">&lt;/</span><span class="s3"><b>a</b></span><span class="s2">&gt;&lt;/</span><span class="s3"><b>li</b></span><span class="s2">&gt;</span></p>
   28 : <p class="p2"><span class="s4"><span class="Apple-converted-space">    </span></span><span class="s1">{%</span><span class="s4"> </span><span class="s3"><b>endfor</b></span><span class="s4"> </span><span class="s1">%}</span></p>
   29 : <p class="p2"><span class="s4"><span class="Apple-converted-space">    </span>&lt;/</span><span class="s3"><b>ul</b></span><span class="s4">&gt;</span></p>
   30 : <p class="p3"><span class="s1">{%</span><span class="s2"> </span><span class="s4"><b>else</b></span><span class="s2"> </span><span class="s1">%}</span></p>
   31 : <p class="p2"><span class="s4"><span class="Apple-converted-space">    </span>&lt;</span><span class="s3"><b>p</b></span><span class="s4">&gt;No polls are available.&lt;/</span><span class="s3"><b>p</b></span><span class="s4">&gt;</span></p>
   32 : <p class="p3"><span class="s1">{%</span><span class="s2"> </span><span class="s4"><b>endif</b></span><span class="s2"> </span><span class="s1">%}</span></p>
   33 : <p class="p4"><span class="s4"><br>
   34 : </span></p>


Traceback (most recent call last):
  File "/Library/Frameworks/Python.framework/Versions/3.8/lib/python3.8/site-packages/django/template/base.py", line 469, in parse
    compile_func = self.tags[command]

During handling of the above exception ('</span><span'), another exception occurred:
  File "/Library/Frameworks/Python.framework/Versions/3.8/lib/python3.8/site-packages/django/core/handlers/exception.py", line 34, in inner
    response = get_response(request)
  File "/Library/Frameworks/Python.framework/Versions/3.8/lib/python3.8/site-packages/django/core/handlers/base.py", line 115, in _get_response
    response = self.process_exception_by_middleware(e, request)
  File "/Library/Frameworks/Python.framework/Versions/3.8/lib/python3.8/site-packages/django/core/handlers/base.py", line 113, in _get_response
    response = wrapped_callback(request, *callback_args, **callback_kwargs)
  File "/Users/XXXXX/Documents/Programming/PycharmProjects/mysite/polls/views.py", line 9, in index
    template = loader.get_template('polls/index.html')
  File "/Library/Frameworks/Python.framework/Versions/3.8/lib/python3.8/site-packages/django/template/loader.py", line 15, in get_template
    return engine.get_template(template_name)
  File "/Library/Frameworks/Python.framework/Versions/3.8/lib/python3.8/site-packages/django/template/backends/django.py", line 34, in get_template
    return Template(self.engine.get_template(template_name), self)
  File "/Library/Frameworks/Python.framework/Versions/3.8/lib/python3.8/site-packages/django/template/engine.py", line 143, in get_template
    template, origin = self.find_template(template_name)
  File "/Library/Frameworks/Python.framework/Versions/3.8/lib/python3.8/site-packages/django/template/engine.py", line 125, in find_template
    template = loader.get_template(name, skip=skip)
  File "/Library/Frameworks/Python.framework/Versions/3.8/lib/python3.8/site-packages/django/template/loaders/base.py", line 29, in get_template
    return Template(
  File "/Library/Frameworks/Python.framework/Versions/3.8/lib/python3.8/site-packages/django/template/base.py", line 156, in __init__
    self.nodelist = self.compile_nodelist()
  File "/Library/Frameworks/Python.framework/Versions/3.8/lib/python3.8/site-packages/django/template/base.py", line 194, in compile_nodelist
    return parser.parse()
  File "/Library/Frameworks/Python.framework/Versions/3.8/lib/python3.8/site-packages/django/template/base.py", line 471, in parse
    self.invalid_block_tag(token, command, parse_until)
  File "/Library/Frameworks/Python.framework/Versions/3.8/lib/python3.8/site-packages/django/template/base.py", line 530, in invalid_block_tag
    raise self.error(

Exception Type: TemplateSyntaxError at /polls/
Exception Value: Invalid block tag on line 24: '</span><span'. Did you forget to register or load this tag?

标签: pythondjango

解决方案


推荐阅读