【发布时间】:2017-10-02 22:37:43
【问题描述】:
我是烧瓶和 Web 开发的新手,我按照教程进行操作,但出现内部服务器错误。我在尝试通过输入 URL“/question/title”访问@app.route('question/<title>') 时收到错误
代码:
from flask import flash, url_for, request, render_template
from app import app
import redis
#connect to redis data store
r = redis.StrictRedis(host='localhost', port=6379, db=0, charset='utf-8', decode_responses= True)
#alternate ways to connect to redis, each command is equivalent
#r = redis.StrictRedis()
#r = redis.StrictRedis('localhost', 6379, 0)
# server/
@app.route('/')
def hello():
#ceating a link to the second page
create_page = url_for('create')
return '<a href="' + create_page + '">Creat Question</a>'
# server/create
@app.route('/create', methods =['GET', 'POST'])
def create():
if request.method == 'GET':
# send to user the form
return render_template('CreateQuestion.html')
elif request.method == 'POST':
#read the data and save it
title = request.form['title']
answer = request.form['answer']
question = request.form['question']
#store data in data store
r.set(title + ':question', question)
r.set(title + ':answer', answer)
return render_template('CreatedQuestion.html', question = question)
else:
return "<h2>Invalid request</h2>"
@app.route('/question/<title>', methods = ['GET', 'POST'])
def question(title):
if request.method == 'GET':
# send the user the form
question = r.get(title + ':question')
return render_template('AnswerQuestion.html', question = question)
elif requset.method == 'POST':
# user has attempt answer. cheak if they're correct
submittedAnswer = request.form['submittedAnswer']
answer = r.get(title + ':answer')
if submittedAnswer == answer:
return render_template('Correct.html')
else:
return render_template('Incorrect.html', submittedAnswer = submittedAnswer, answer = answer)
else:
return '<h2>Invalid request</h2>'
我从这里得到title:
<!DOCTYPE html>
<html lang="en" xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta charset="utf-8" />
<title>Create a new question</title>
</head>
<body>
<h2>Please create a new question</h2>
<form method="post">
<div>
<label for="title">Title</label>
<input type="text" name="title" />
</div>
<div>
<label for="question">Question</label>
<input type="text" name="question" />
</div>
<div>
<label for="answer">Answer</label>
<input type="text" name="answer" />
</div>
<button type="submit">Submit question</button>
</form>
</body>
</html>
该应用程序只是一个问答应用程序,我在 Jinja 模板文件夹中有四个 HTML 文件,它应该从用户输入中获取标题并将其替换为函数参数,所以如果我输入“python”作为标题 URL 必须变为“/question/python”,这是我想要做的。
那么谁能告诉我我错过了什么?
【问题讨论】:
-
请提供完整的错误引用。
标签: python flask internal-server-error