首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >Flask应用程序冲突的路由是路由吗。有什么想法吗?

Flask应用程序冲突的路由是路由吗。有什么想法吗?
EN

Stack Overflow用户
提问于 2019-03-27 02:45:08
回答 1查看 188关注 0票数 -2

我正在尝试使用flask应用程序在pythonanywhere上创建一个论坛或代码共享站点,但我有冲突的路线,所以它失败了。

这样做的目的是在用户完成设置好的html表单后,在.csv文件(已经存在)中添加新的一行。这在/addpythoncode路由上运行良好,但在/addflaskcode路由上失败。

我将在下面提供路由和错误日志输出。有人能帮我解决这个问题吗?

代码语言:javascript
复制
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')

下面是我在错误日志中得到的消息:

代码语言:javascript
复制
2019-03-26 21:21:43,161: OSError: write error
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-03-27 05:00:34

我同意Milad M.的观点,但我同意你的观点,即没有这样的错误。更改return render_template (...)的缩进级别。在写入文件的代码中添加try-except块。

代码语言:javascript
复制
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')

这应该会在发生读写问题时导致内部服务器错误。

票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/55364250

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档