我正在尝试使用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
发布于 2019-03-27 05:00:34
我同意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')
这应该会在发生读写问题时导致内部服务器错误。
https://stackoverflow.com/questions/55364250
复制相似问题