完成注册功能
- js文件: onclick函数return True时才提交表单,return False时不提交表单。
- html文件:
- <form>中设置 action和method="post"
- <input> 中设置 name
- 主py文件中:
- from flask import request, redirect, url_for
- @app.route('/regist/', methods=['GET', 'POST’])
def regist():
if request.method == 'GET':
return render_template('regist.html')
else:
username = request.form.get(‘username’)#获取form中的数据
判断用户名是否存在:存在报错
不存在,存到数据库中
redirect重定向到登录页
主py:
from flask import Flask,redirect,request,url_for from flask import render_template from flask_sqlalchemy import SQLAlchemy import config app = Flask(__name__) app.config.from_object(config) db=SQLAlchemy(app) class User(db.Model): __tablename__='user' id=db.Column(db.Integer,primary_key=True,autoincrement=True) username=db.Column(db.String(20),nullable=False) password = db.Column(db.String(20), nullable=False) nickname=db.Column(db.String(20)) # db.create_all() #查询 # user=User.query.filter(User.username=='mis1234').first() # print(user.id,user.username,user.password) #增加 # user=User(username='mis1234',password='111111',nickname='l') # db.session.add(user) # db.session.commit() #增加 # user=User(username='luk',password='123456',nickname='lu') # db.session.add(user) # db.session.commit() # 修改 # user=User.query.filter(User.username=='mis1234').first() # user.password='12345678' # db.session.commit() # # # 删除 # user=User.query.filter(User.username=='mis1234').first() # db.session.delete(user) # db.session.commit() @app.route('/') def base(): return render_template('base.html') @app.route('/login/',methods=['GET','POST']) def login(): return render_template('login.html') @app.route('/register/',methods=['GET','POST']) def register(): if request.method=='GET': return render_template('register.html') else: usern=request.form.get('username') nickn = request.form.get('nickname') passw = request.form.get('password') user=User.query.filter(User.username==usern).first() if user: return '用户名已存在。' else: user1=User(username=usern,password=passw,nickname=nickn) db.session.add(user1) db.session.commit() return redirect(url_for('login'))#重定回向登录页面 @app.route('/question/') def question(): return render_template('question.html') @app.route('/shouye/') def shouye(): return render_template('shouye.html') if __name__ == '__main__': app.run(debug=True)
注册:
{% extends 'base.html'%} {% block title %} 注册 {% endblock %} {% block head %} <link rel="stylesheet" type="text/css" href="{{url_for('static',filename='css/register.css') }}"> <script src="{{url_for('static',filename='js/register.js') }}"></script> {% endblock %} {% block main %} <div class="box"> <h2>注册</h2> <form action="{{url_for('register')}}" method="post"> <div class="input_box"> <input type="text" id="uname" placeholder="请设置用户名" name="username"> </div> <div class="input_box"> <input type="text" id="unumber" placeholder="请输入昵称" name="nickname"> </div> <div class="input_box"> <input type="password" id="upass" placeholder="请设置登录密码" name="password"> </div> <div class="input_box"> <input type="password" id="uupass" placeholder="请再次输入登录密码"> </div> <div id="error_box"><br></div> <div class="lianjie"> <a href="{{url_for('login')}}">已有账户,前往登录</a> </div> <div class="input_box"> <button id="register" onclick="return check()">register </button> </div> </form> </div> {% endblock %}
function check() { var oUname = document.getElementById("uname"); var oPass = document.getElementById("upass"); var onumber = document.getElementById("unumber"); var ooPass = document.getElementById("uupass"); var oError = document.getElementById("error_box"); oError.innerHTML = "<br>"; if (oUname.value.length < 6 || oUname.value.length > 20) { oError.innerHTML = "用户名为6-20位。"; return false; } else if((oUname.value.charCodeAt(0)>=48)&&(oUname.value.charCodeAt(0)<=57)){ oError.innerHTML="用户名首位不能为数字"; return false; } else{ for(var i=0;i<oUname.value.length;i++) { if ((oUname.value.charCodeAt(i) < 48 || oUname.value.charCodeAt(i) > 57) && (oUname.value.charCodeAt(i) < 97 || oUname.value.charCodeAt(i) > 122)) { oError.innerHTML = "用户名只能包括字母和数字"; return false; } } } if (oPass.value.length < 6 || ooPass.value.length > 20) { oError.innerHTML = "密码为6-20位。"; return false; } if (oPass.value != uupass.value) { alert('两次输入密码不一致'); return false; } return true; // window.alert("注册成功!"); }


浙公网安备 33010602011771号