使用Flask和Jinja时出现500内部服务器错误
我目前自学自己的Python,使用名为“Head First:Python(2nd Edition)”的书,迄今为止它一直很好,但我目前陷入困境建立一个简单的webapp的早期阶段。 Web应用程序允许用户输入短语和字母,然后输出两者的intersection
。由于本书的很大一部分都是基于这一点,所以我不能通过跳过这一步向前迈进。我一直在试图找到一个错误,但无济于事。使用Flask和Jinja时出现500内部服务器错误
所有代码都是由这本书在提供:http://python.itcarlow.ie/ed2/ch05/webapp/
文件夹中的文件vsearch4web.py是最后的版本,所以请不要使用。这是我在用,而不是我的vsearch4web.py文件夹:
from flask import Flask, render_template
from vsearch import search4letters
app = Flask(__name__)
@app.route('/')
def hello() -> str:
return 'Hello world from Flask!'
@app.route('/search4')
def do_search() -> str:
return str(search4letters('life, the universe, and everything','eiru,!'))
@app.route('/entry')
def entry_page() -> 'html':
return render_template('entry.html',the_title='Welcome to search4letters on the web!')
app.run()
我已经设置了文件夹结构的指示:
WebApp文件夹 - 的webapp> vsearch4web.py 静态文件夹(子文件夹) - > hf.css(来自“static”) 模板文件夹(webapp的子文件夹) - > base.html,entry.html和results.html(来自“模板”)
静态文件文件夹和模板文件夹可在本书提供的上述URL中下载。
但是,当我运行vsearch4web.py,我去我的浏览器并输入回环地址(http://127.0.0.1:5000/entry),我得到一个“500内部服务器错误”。
http://127.0.0.1:5000/和http://127.0.0.1:5000/search4都可以工作。
我试过重新检查代码几次,但我不知道我失踪了什么。
有人可以帮忙吗?
谢谢。
-> type
语法在Python中不是必需的。
您应该阅读您的服务器日志,看看def entry_page()
未正确定义。
使用正确类型的render_template
(一Response
,我认为),或只是将其删除
谢谢,但所有这些都是新的我。任何想法如何我可以读取我的服务器日志,我应该注意什么? – paulnsn
这取决于你如何/在哪里开始烧瓶。例如,只需运行'python vsearch4web.py',您的日志将立即在该终端会话中可用 –
来自同一本书的学习......我被困在对于一两天为好。我的问题是我用.html命名了模板,但它们保存为文本而不是html文件。要解决这个问题,打开你的模板,进入“另存为...”并检查下拉菜单是否显示文本或html-如果它们是文本,切换到html并重新保存。
下面的行导致该问题:
def entry_page() -> 'html':
使用注释(->
)仅与Python类型可能和衍生(如str
,dict
,int
,float
,等...)。
由于事实上,你甚至不必在Python在所有使用注释:
@app.route('/entry')
def entry_page():
return render_template('entry.html',the_title='Welcome to search4letters on the web!')
通过render_template
返回的Response
对象将有正确的“类型”,这是由确定Content-Type: text/html; charset=utf-8
在响应头中(而不是你的路由的返回值)。
'html'不是Python类型 –
尝试'app.run(debug = True)'但是在猜测它找不到你的模板文件夹,或entry.html –