没有使用Flask(Python)将HTML表单中的数据传递给MySQL
我需要一些帮助。我就是无法让这段代码将HTML表单中的数据插入MySQL。插入的行始终没有任何数据。完全空了。让我知道你的想法 PS:MySql还有2个字段,我还没有使用,这些文件都托管在Pythonywhere上 HTML(仅表格):没有使用Flask(Python)将HTML表单中的数据传递给MySQL,python,mysql,flask,sqlalchemy,pythonanywhere,Python,Mysql,Flask,Sqlalchemy,Pythonanywhere,我需要一些帮助。我就是无法让这段代码将HTML表单中的数据插入MySQL。插入的行始终没有任何数据。完全空了。让我知道你的想法 PS:MySql还有2个字段,我还没有使用,这些文件都托管在Pythonywhere上 HTML(仅表格): 您正在错误地创建和使用模型类 在您的案例中,实际上根本不需要\uuuu init\uuuu。此外,您在构造函数中做了一些不正确的事情,关于Python类的简短复习教程在这里不会有什么坏处 以下是您可以遵循的用户模型模式 您不需要定义\uuuu init\uuuu
您正在错误地创建和使用模型类 在您的案例中,实际上根本不需要
\uuuu init\uuuu
。此外,您在构造函数中做了一些不正确的事情,关于Python类的简短复习教程在这里不会有什么坏处
以下是您可以遵循的用户模型模式
您不需要定义\uuuu init\uuuu
class User(db.Model):
"""Users"""
__tablename__ = 'users'
id = db.Column(db.Integer, primary_key=True, autoincrement=True)
first_name = db.Column(db.String(25), nullable=False)
last_name = db.Column(db.String(25), nullable=False)
image_url = db.Column(db.Text, default=DEFAULT_IMG_URL)
email = db.Column(db.String(45), unique=True, nullable=False)
password = db.Column(db.String(128), unique=False, nullable=False)
def __repr__(self):
return f'<User id:{self.id} first_name:{self.first_name} last_name:{self.last_name} image_url:%.8s' % self.image_url
def get_full_name(self):
return f'{self.first_name} = {self.last_name}'
完美的非常感谢。我不得不添加“table_args={'extend_existing':True}”,因为在这个问题中没有粘贴另一个类(login)。帮了很多忙!
from datetime import datetime
from flask import Flask, redirect, render_template, request, url_for, session
from flask_login import current_user, login_required, login_user, LoginManager, logout_user, UserMixin
from flask_migrate import Migrate
from flask_sqlalchemy import SQLAlchemy
from werkzeug.security import check_password_hash
from flask import session as login_session
@app.route("/register/", methods=["GET", "POST"])
def register_user():
if request.method == "GET":
return render_template("register.html")
else:
User_Data = Reg_User(firstname=request.form["firstname"],lastname=request.form["lastname"],email=request.form["email"],password_hash=request.form["password"])#,groups="freeuser")
db.session.add(User_Data)
db.session.commit()
return redirect(url_for('login'))
class Reg_User(db.Model):
__tablename__ = 'users'
def __init__(self, firstname, lastname, email, password_hash):#, groups):
id = db.Column(db.Integer, primary_key=True)
firstname = db.Column(db.String(20), unique=False, nullable=False)
lastname = db.Column(db.String(45), unique=False, nullable=False)
email = db.Column(db.String(45), unique=True, nullable=False)
password_hash = db.Column(db.String(128), unique=False, nullable=False)
def __repr__(self):
return '<Reg_User %r>'.format(self.username)
+--------------------------------------------------------------------------
| id | username | password_hash | firstname | lastname | email | groups | regtime |
+--------------------------------------------------------------------------
| 43 | NULL | NULL | NULL | NULL | NULL | NULL | 2019-01-09 22:00:56 |
| 44 | NULL | NULL | NULL | NULL | NULL | NULL | 2019-01-09 22:55:09 |
| 45 | NULL | NULL | NULL | NULL | NULL | NULL | 2019-01-09 23:04:15 |
| 46 | NULL | NULL | NULL | NULL | NULL | NULL | 2019-01-09 23:10:32 |
class User(db.Model):
"""Users"""
__tablename__ = 'users'
id = db.Column(db.Integer, primary_key=True, autoincrement=True)
first_name = db.Column(db.String(25), nullable=False)
last_name = db.Column(db.String(25), nullable=False)
image_url = db.Column(db.Text, default=DEFAULT_IMG_URL)
email = db.Column(db.String(45), unique=True, nullable=False)
password = db.Column(db.String(128), unique=False, nullable=False)
def __repr__(self):
return f'<User id:{self.id} first_name:{self.first_name} last_name:{self.last_name} image_url:%.8s' % self.image_url
def get_full_name(self):
return f'{self.first_name} = {self.last_name}'
@app.route("/register/", methods=["GET", "POST"])
def register_user():
if request.method == "GET":
return render_template("register.html")
else:
first_name = request.form.get('first_name')
last_name = request.form.get('last_name')
email = request.form.get('email')
password = request.form.get('password')
# hash your password, this is a separate topic
hashed = bcrypt.generate_password_hash(password).decode('utf-8')
user = User(first_name=first_name, last_name=last_name, email=email, password=hashed)
db.session.add(user)
db.session.commit()
return redirect(url_for('login'))