【发布时间】:2020-06-05 14:52:26
【问题描述】:
我正在学习 Flask,但我的代码无法运行,而且看起来还不错。我用谷歌搜索了这个错误并发现了非常不同的结果,所以对于 expected token 'name', got '.' 和其他符号来说是一个特定的结果。我正在测试 404 页面,它来自 base。
from flask import Flask, render_template
from flask_bootstrap import Bootstrap
app = Flask(__name__)
bootstrap = Bootstrap(app)
@app.errorhandler(404)
def page_not_found(e):
return render_template('404.html'), 404
@app.errorhandler(500)
def internal_server_error(e):
return render_template('500.html'), 500
@app.route('/')
def index():
return render_template('index.html')
app.add_url_rule('/', 'index', index)
@app.route('/user/<name>')
def user(name):
return render_template('user.html', name=name)
base.html...
{% extends "bootstrap/base.html" %}
{% block title %}Flasky{% endblock %}
{% block navbar %}
<div class="navbar navbar-inverse" role="navigation">
<div class="container">
<div class="navbar-header">
<button type="button" class="navbar-toggle"
data-toggle="collapse" data-target=".navbar-collapse">
<span class="sr-only">Toggle Navigation</span>
<span class="icon-bar"></span>
<span class="icon-bar"></span>
<span class="icon-bar"></span>
</button>
<a class="navbar-brand" href="/">Flasky</a>
</div>
<div class="navbar-collapse collapse">
<ul class="nav navbar-nav">
<li><a href="/">Home</a></li>
</ul>
</div>
</div>
</div>
{% endblock %}
{% block content %}
<div class="container">
{% block.page_content %}{% endblock %}
</div>
{% endblock %}
404.html...
{% extends "base.html" %}
{% block title %}Flasky - Page Not Found{% endblock %}
{% block page_content %}
<div class="page-header">
<h1>Not Found!</h1>
</div>
{% endblock %}
当尝试请求一堆随机字母产生 404 时,会发生以下情况...
127.0.0.1 - - [21/Feb/2020 18:39:19] "GET /asdfsadf HTTP/1.1" 500 -
Traceback (most recent call last):
File "/home/john/devel/learn/flask/myflasky/venv/lib/python3.7/site-packages/flask/app.py", line 1949, in full_dispatch_request
rv = self.dispatch_request()
File "/home/john/devel/learn/flask/myflasky/venv/lib/python3.7/site-packages/flask/app.py", line 1925, in dispatch_request
self.raise_routing_exception(req)
File "/home/john/devel/learn/flask/myflasky/venv/lib/python3.7/site-packages/flask/app.py", line 1907, in raise_routing_exception
raise request.routing_exception
File "/home/john/devel/learn/flask/myflasky/venv/lib/python3.7/site-packages/flask/ctx.py", line 350, in match_request
result = self.url_adapter.match(return_rule=True)
File "/home/john/devel/learn/flask/myflasky/venv/lib/python3.7/site-packages/werkzeug/routing.py", line 1945, in match
raise NotFound()
werkzeug.exceptions.NotFound: 404 Not Found: The requested URL was not found on the server. If you entered the URL manually please check your spelling and try again.
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "/home/john/devel/learn/flask/myflasky/venv/lib/python3.7/site-packages/flask/app.py", line 2463, in __call__
return self.wsgi_app(environ, start_response)
File "/home/john/devel/learn/flask/myflasky/venv/lib/python3.7/site-packages/flask/app.py", line 2449, in wsgi_app
response = self.handle_exception(e)
File "/home/john/devel/learn/flask/myflasky/venv/lib/python3.7/site-packages/flask/app.py", line 1866, in handle_exception
reraise(exc_type, exc_value, tb)
File "/home/john/devel/learn/flask/myflasky/venv/lib/python3.7/site-packages/flask/_compat.py", line 39, in reraise
raise value
File "/home/john/devel/learn/flask/myflasky/venv/lib/python3.7/site-packages/flask/app.py", line 2446, in wsgi_app
response = self.full_dispatch_request()
File "/home/john/devel/learn/flask/myflasky/venv/lib/python3.7/site-packages/flask/app.py", line 1951, in full_dispatch_request
rv = self.handle_user_exception(e)
File "/home/john/devel/learn/flask/myflasky/venv/lib/python3.7/site-packages/flask/app.py", line 1815, in handle_user_exception
return self.handle_http_exception(e)
File "/home/john/devel/learn/flask/myflasky/venv/lib/python3.7/site-packages/flask/app.py", line 1743, in handle_http_exception
return handler(e)
File "/home/john/devel/learn/flask/myflasky/hello.py", line 9, in page_not_found
return render_template('404.html'), 404
File "/home/john/devel/learn/flask/myflasky/venv/lib/python3.7/site-packages/flask/templating.py", line 140, in render_template
ctx.app,
File "/home/john/devel/learn/flask/myflasky/venv/lib/python3.7/site-packages/flask/templating.py", line 120, in _render
rv = template.render(context)
File "/home/john/devel/learn/flask/myflasky/venv/lib/python3.7/site-packages/jinja2/environment.py", line 1090, in render
self.environment.handle_exception()
File "/home/john/devel/learn/flask/myflasky/venv/lib/python3.7/site-packages/jinja2/environment.py", line 832, in handle_exception
reraise(*rewrite_traceback_stack(source=source))
File "/home/john/devel/learn/flask/myflasky/venv/lib/python3.7/site-packages/jinja2/_compat.py", line 28, in reraise
raise value.with_traceback(tb)
File "/home/john/devel/learn/flask/myflasky/templates/404.html", line 1, in top-level template code
{% extends "base.html" %}
File "/home/john/devel/learn/flask/myflasky/venv/lib/python3.7/site-packages/jinja2/environment.py", line 832, in handle_exception
reraise(*rewrite_traceback_stack(source=source))
File "/home/john/devel/learn/flask/myflasky/venv/lib/python3.7/site-packages/jinja2/_compat.py", line 28, in reraise
raise value.with_traceback(tb)
File "/home/john/devel/learn/flask/myflasky/templates/base.html", line 29, in template
{% block.page_content %}{% endblock %}
jinja2.exceptions.TemplateSyntaxError: expected token 'name', got '.'
我不明白如何找到这里报告的错误,也基本不明白输出。如果有人能给我指出这个错误的含义会很好,例如它期望“名称”在哪里,因为我不知道。
【问题讨论】:
-
您的
base.html中有错字:{% block.page_content %}{% endblock %}。只需将block后面的点替换为空格即可。