我是新手,并制作微博应用程序来了解它。 我遇到了问题,新用户的注册详细信息没有写入数据库。 有人能帮助我吗?
她的观点功能:
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>
答案 0 :(得分:0)
我无法发表评论,但您是否可能在代码中进行了大量更改?我认为有必要进行审查。例如,表格中的元素之间的映射&#39;注册&#39;而且这个观点似乎并没有加起来:
u.First_name=register.First_name.data
...
first_name=StringField('f_name',[validators.DataRequired(message=None)])
但是视图中的引用似乎也指向“注册”&#39;而不是reg:
reg=Register()
if reg.validate_on_submit():
u=User()
u.username=register.username.data
同样在浏览代码时,我也对模板中的按钮进行了更改,作为快速更改,我更改了按钮的代码:
<button type="submit">register</button>
我不明白为什么你在那里放置了一个链接到用户页面(在你的视图中使用重定向):
<p type="submit"><a href='/user' value="Register">Register</a></p>