Flask 应用程序冲突路线是路线。有任何想法吗?
Flask app conflicting routes is it the routes. any ideas?
我正在尝试使用 flask 应用程序在 pythonanywhere 上创建一个论坛或代码共享网站,但我有冲突的路线,所以它失败了。
这是在用户完成我设置的 html 表单时向 .csv 文件(已经存在)添加一个新行。这在 /addpythoncode 路由上工作正常,但在 /addflaskcode 路由上失败。
我将在下面提供路由和错误日志输出。有人可以帮我解决这个问题吗?
import sqlite3
from flask import Flask, render_template, request, redirect
import random
import csv
app = Flask(__name__)
@app.route('/addpythoncode', methods=['GET', 'POST'])
def addpycode():
if request.method == 'GET':
return render_template('addpythoncode.html')
else:
dict = {}
dict["codename"] = request.form['codename']
dict["name"] = request.form['name']
dict["code"] = request.form['code']
f = open("/home/Ethankbdca/mysite/Pythonforum.csv", "a")
with f:
fnames = ['codename', 'name', 'code']
writer = csv.DictWriter(f, fieldnames=fnames)
writer.writerow(dict)
return redirect('http://ethankbdca.pythonanywhere.com/pythonforum')
@app.route('/addflaskcode', methods=['GET', 'POST'])
def newflskcode():
if request.method == 'GET':
return render_template('addflaskcode.html')
else:
dict = {}
dict["routename"] = request.form['routecode']
dict["name"] = request.form['name']
dict["routecode"] = request.form['routecode']
f = open("/home/Ethankbdca/mysite/Flaskforum.csv", "a")
with f:
fnames = ['routename', 'name', 'routecode']
writer = csv.DictWriter(f, fieldnames=fnames)
writer.writerow(dict)
return redirect('http://ethankbdca.pythonanywhere.com/flaskforum')
这是我在错误日志中得到的消息:
2019-03-26 21:21:43,161: OSError: write error
我同意 Milad M. 的观点,但我同意你的观点,不存在这样的错误。
更改 return render_template (...) 的缩进级别。在写入文件的代码中添加一个 try-except 块。
import abort
@app.route('/addpythoncode', methods=['GET', 'POST'])
def addpycode():
if request.method == 'GET':
return render_template('addpythoncode.html')
else:
dict = {
'codename': request.form['codename'],
'name': request.form['name'],
'code': request.form['code'],
}
try:
fnames = ['codename', 'name', 'code']
f = open("/home/Ethankbdca/mysite/Pythonforum.csv", "a")
writer = csv.DictWriter(f, fieldnames=fnames)
writer.writerow(dict)
writer.close()
except Exception as ex:
abort(500)
return redirect('http://ethankbdca.pythonanywhere.com/pythonforum')
这应该会在读写问题上导致内部服务器错误。
我正在尝试使用 flask 应用程序在 pythonanywhere 上创建一个论坛或代码共享网站,但我有冲突的路线,所以它失败了。
这是在用户完成我设置的 html 表单时向 .csv 文件(已经存在)添加一个新行。这在 /addpythoncode 路由上工作正常,但在 /addflaskcode 路由上失败。
我将在下面提供路由和错误日志输出。有人可以帮我解决这个问题吗?
import sqlite3
from flask import Flask, render_template, request, redirect
import random
import csv
app = Flask(__name__)
@app.route('/addpythoncode', methods=['GET', 'POST'])
def addpycode():
if request.method == 'GET':
return render_template('addpythoncode.html')
else:
dict = {}
dict["codename"] = request.form['codename']
dict["name"] = request.form['name']
dict["code"] = request.form['code']
f = open("/home/Ethankbdca/mysite/Pythonforum.csv", "a")
with f:
fnames = ['codename', 'name', 'code']
writer = csv.DictWriter(f, fieldnames=fnames)
writer.writerow(dict)
return redirect('http://ethankbdca.pythonanywhere.com/pythonforum')
@app.route('/addflaskcode', methods=['GET', 'POST'])
def newflskcode():
if request.method == 'GET':
return render_template('addflaskcode.html')
else:
dict = {}
dict["routename"] = request.form['routecode']
dict["name"] = request.form['name']
dict["routecode"] = request.form['routecode']
f = open("/home/Ethankbdca/mysite/Flaskforum.csv", "a")
with f:
fnames = ['routename', 'name', 'routecode']
writer = csv.DictWriter(f, fieldnames=fnames)
writer.writerow(dict)
return redirect('http://ethankbdca.pythonanywhere.com/flaskforum')
这是我在错误日志中得到的消息:
2019-03-26 21:21:43,161: OSError: write error
我同意 Milad M. 的观点,但我同意你的观点,不存在这样的错误。 更改 return render_template (...) 的缩进级别。在写入文件的代码中添加一个 try-except 块。
import abort
@app.route('/addpythoncode', methods=['GET', 'POST'])
def addpycode():
if request.method == 'GET':
return render_template('addpythoncode.html')
else:
dict = {
'codename': request.form['codename'],
'name': request.form['name'],
'code': request.form['code'],
}
try:
fnames = ['codename', 'name', 'code']
f = open("/home/Ethankbdca/mysite/Pythonforum.csv", "a")
writer = csv.DictWriter(f, fieldnames=fnames)
writer.writerow(dict)
writer.close()
except Exception as ex:
abort(500)
return redirect('http://ethankbdca.pythonanywhere.com/pythonforum')
这应该会在读写问题上导致内部服务器错误。