私はフラスコに新しく、それを知るためのマイクロブログアプリケーションを作成しています。 問題が発生しました。新規ユーザーの登録の詳細がデータベースに書き込まれていません。 誰かが私を助けることができますか?フォームからSQLAlchemyデータベースにデータを書き込む
ハーズの私の見解機能:
from app import app,db
from .forms import LoginForm,Register
from flask import render_template,session,redirect,url_for
from flask_login import login_user, logout_user, current_user,
login_required
@app.route('/')
@app.route('/index')
def index():
return render_template('index.html')
@app.route('/login',methods=['GET','POST'])
def login():
form=LoginForm()
return render_template('login.html',
title='Sign In',
form=form)
@app.route('/user',methods=['GET','POST'])
def user():
return render_template('user.html')
@app.route('/register',methods=['GET','POST'])
def registration():
reg=Register()
if reg.validate_on_submit():
u=User()
u.username=register.username.data
u.First_name=register.First_name.data
u.Last_name=register.Last_name.data
u.password=register.password.data
u.email=register.email.data
db.session.add(u)
db.session.commit()
return redirect(url_for('index'))
return render_template('register.html',
title='New Registration',
register=reg)
はここに私のモデルです:
from app import db
class User(db.Model):
id=db.Column(db.Integer, primary_key=True)
username=db.Column(db.String(32),index=True,unique=True)
First_name=db.Column(db.String(32))
Last_name=db.Column(db.String(32))
password=db.Column(db.String(32))
email=db.Column(db.String(20))
posts=db.relationship('Post',backref='author',lazy='dynamic')
def get_id(self):
try:
return unicode(self.id) # python 2
except NameError:
return str(self.id) #python 3
class Post(db.Model):
id=db.Column(db.Integer,primary_key=True)
body=db.Column(db.String(300))
timestamp=db.Column(db.DateTime)
user_id=db.Column(db.Integer,db.ForeignKey(User.id))
forms.py
from flask_wtf import Form
from wtforms import StringField,BooleanField,PasswordField,validators
class LoginForm(Form):
username=StringField('username',[validators.DataRequired()])
password=PasswordField('password',[validators.DataRequired()])
remember_me=BooleanField('remember me',default=False)
class Register(Form):
first_name=StringField('f_name',[validators.DataRequired(message=None)])
last_name=StringField('l_name',[validators.DataRequired(message=None)])
email=StringField('email',[validators.Email(message='Enter a valid Email ID')])
password=PasswordField('reg_password',[validators.Length(min=8,max=20)])
username=StringField('u_name',[validators.DataRequired(message=None)])
confirm_password=PasswordField('c_password',[validators.DataRequired(),validators.EqualTo('password',message='passwords should match')])
ここでは、登録ページのテンプレートです:
<form action="" method="post" name="Login">
{{ register.hidden_tag() }}
<h1>New Registration</h1>
<p>First Name: {{ register.first_name }}</p>
<p>Last Name: {{ register.last_name}}</p>
<p>email:{{ register.email }}</p>
<p>username: {{register.username}}</p>
<p>Password:{{register.password}}</p>
<p>Password:{{register.confirm_password}}</p>
<p type="submit"><a href='/user' value="Register">Register</a></p>
そして、何が問題なのですか? –
フォームデータがデータベースに書き込まれていません。 –