Flask - Postgres 400 错误请求

姆扎亚斯

我有 Flask 和 Postgres 的问题。下面我将链接我的 app.py、models.py 和 views.py。每当我尝试定义新用户并将其添加到数据库时,就会出现 400 错误。我检查了我的服务器是否在 postgres 中运行并且我已连接到数据库。我的所有表都已正确创建,并且我能够在 python shell 中传递新用户。有什么想法吗?

应用程序

from flask import Flask, render_template
from flask_sqlalchemy import SQLAlchemy


app = Flask(__name__)
app.config['SQLALCHEMY_DATABASE_URI'] = 'postgresql://user:pass@localhost/mydb'

db = SQLAlchemy(app)

from views import *
from models import *

if __name__=='__main__':
    db.create_all()
    app.run(debug=True)

视图.py

from app import app
from app import db
from models import User
from flask import Flask, render_template, redirect, url_for, request

@app.route('/')
def home():
    #this will look different for logged in and logged out users
    return render_template('home.html')


@app.route('/about')
def about():
    #notes
    return render_template('about.html')

@app.route('/contact')
def contact():
    #notes
    return render_template('contact.html')

@app.route('/blog')
def blog():
    #notes
    return render_template('blog.html')

@app.route('/podcast')
def podcast():
    #notes
    return render_template('podcast.html')

@app.route('/shop')
def shop():
    #notes
    return render_template('shop.html')

@app.route('/add_user', methods=['GET', 'POST'])
def add_user():
    user = User(request.form['username'], request.form['email'])
    db.session.add(user)
    db.session.commit()
    return render_template('add_user.html')

模型.py

from app import db
from flask_sqlalchemy import SQLAlchemy

class User(db.Model):
    id = db.Column(db.Integer, primary_key=True)
    username = db.Column(db.String(80), unique=True)
    email = db.Column(db.String(120), unique=True)

    def __init__(self, username, email):
        self.username = username
        self.email = email

    def __repr__(self):
        return '<User %r>' % self.username

add_user.html

<!DOCTYPE html>
<html>
  <head>
    <meta charset="utf-8">
    <title>Add User</title>
  </head>
  <body>

    <form action="/add_user" method="post">
      <label>username:</label>
      <input type="text" id="username" name="username">
      <label>email:</label>
      <input type="text" id="email" name="email">
      <input type="submit">
    </form>

  </body>
</html>
哈迪兹

在 view.py 中

def add_user():
   user = User(request.form['username'], request.form['email'])
   db.session.add(user)
   db.session.commit()
   return render_template('add_user.html')

试试这个代码

def add_user():
   if request.method == 'POST':
     user = User(request.form['username'], request.form['email'])
     db.session.add(user)
     db.session.commit()
return render_template('add_user.html')

http://flask.pocoo.org/docs/0.12/quickstart/#the-request-object

如果你向 /add_user 发送 get 请求,flask 看不到表单变量用户名和密码,request.form 只能从 post 和 put requsest 中工作。

来自文档:“如果表单属性中不存在密钥会发生什么?在这种情况下,会引发特殊的 KeyError。您可以像标准 KeyError 一样捕获它,但如果不这样做,则会出现 HTTP 400 Bad Request 错误页面而是显示。因此,在许多情况下,您不必处理该问题。”

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

Python Flask请求400错误代码

来自分类Dev

Flask和Ajax发布HTTP 400错误的请求错误

来自分类Dev

Flask出现400错误

来自分类Dev

Flask&Wtforms:400错误请求-提交上传表单

来自分类Dev

jQuery $ .get flask功能/路由400错误请求

来自分类Dev

使用flask_socketio + flask + gunicorn + nginx获取502错误的网关和400错误的请求

来自分类Dev

错误的请求错误 400

来自分类Dev

python请求400错误

来自分类Dev

$ .ajax 400错误请求

来自分类Dev

Angularjs错误请求(400)

来自分类Dev

HTTP请求:400错误

来自分类Dev

Ajax 400 错误请求

来自分类Dev

通过表单在Flask上发布数据给出了400错误请求

来自分类Dev

在openshift上将json发布到Flask时出现400错误请求

来自分类Dev

将flask-googlelogin与gunicorn和nginx一起使用会导致400错误请求

来自分类Dev

AJAX错误:400错误的请求

来自分类Dev

烧瓶错误请求错误 400

来自分类Dev

请求库的错误请求错误 400

来自分类Dev

Python Flask 错误请求

来自分类Dev

PHP fsockopen 400错误请求

来自分类Dev

文件上传-错误的请求(400)

来自分类Dev

调试400错误请求响应

来自分类Dev

RestApi的NelmioApiDoc错误请求400

来自分类Dev

解析400错误请求setACL

来自分类Dev

Firebase Hosting 400错误请求

来自分类Dev

HttpListener返回错误请求400

来自分类Dev

POST 400错误,ajax请求

来自分类Dev

AJAX请求的“ 400错误请求”响应

来自分类Dev

每个请求的Azure 400错误请求