flask 用户:注册、登录和退出

来源:互联网 发布:java爬虫框架 编辑:程序博客网 时间:2024/06/07 08:04

既然需要用户认证,那么必须要存储用户信息。可以使用任何形式的存放方式。我用数据库,使用mysql。
一) 首先创建表:
1) .用户名 : usernm (用户不能重名,所以和id字段为联合主键)
2) .用户密码: passwd
3) .用户的id: uid (做为外键,可以作为其他表的主键); 一组数字。类似fans?id=66310254 或者这种
这里写图片描述
4) .用户邮箱:用于邮箱认证。 (暂时不设置该字段,以后再说)

create table users(id int auto_increment,usernm varchar(15),passwd varchar(15),uid char(8),primary key (id))ENGINE=innodb auto_increment=1 default charset=utf8



登陆页面 index.html
参考zabbix的登陆页面,但是也只是很像,因为不会css和html

<!DOCTYPE html><html><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8">        <meta http-equiv="X-UA-Compatible" content="IE=Edge">               <meta name="Author" content="Zabbix SIA">        <title>hexian</title>        <link rel="icon" href="../static/images/saber.ico" type="image/x-icon"/>        <!-- 实现title有图像--><style type="text/css">html {    position: relative;    min-height: 100%;}body {    font-family: Arial, Tahoma, Verdana, sans-serif;    font-size: 100%;    line-height: 1.4em;/*设置行高*/    color: #256384; /*文字的颜色*/    background-color: #ebeef0;    margin-bottom: 60px;/*设置下边距*/    min-width: 950px;    margin: 0;    padding: 0;    border: 0;    vertical-align: baseline;/*设置元素的垂直对齐方式*/}.msg-bad-global {    display: none;    position: fixed;    bottom: 0;    z-index: 10000;    width: 100%;    padding: 5px 5px;    text-align: center;    color: #593c00;    background-color: #ffc859;    border-top: 1px solid #ffc040;}.article{    margin: 0;    padding: 0;    border: 0;    font-size: 100%;    vertical-align: baseline;}.server-name {    color: #768d99;    float: left;    margin-top:0px;    white-space: nowrap; /*规定段落中的文本不进行换行*/    overflow: hidden;/*overflow 属性规定当内容溢出元素框时发生的事情。我试了下默认就是超过后,隐藏*/    text-overflow: ellipsis;    /*text-overflow 属性规定当文本溢出包含元素时发生的事情。显示省略符号来代表被修剪的文本*/    vertical-align: baseline;/*设置元素的垂直对齐方式*/}.signin-container {    background-color: #fff;    width: 480px;    margin: 0 auto;    margin-top: 5%;    padding: 42px 42px 39px 42px;    border: 1px solid #dfe4e7;}.signin-logo {    margin: 0 auto;    margin-bottom: 21px;    width: 419px;    height: 164px;    background: url(../static/images/logo.png) no-repeat }form{display: block; /*block   此元素将显示为块级元素,此元素前后会带有换行*/}label{    padding: 0;    border: 0;    font-size: 100%;    font: inherit;    vertical-align: baseline;    display: inline-block;    margin: 0 0 2px 0 /*上右下左,顺势针*/}input:-webkit-autofill{    background-color: rgb(250, 255, 189);    background-image: none;    color: rgb(0, 0, 0);}input[type="text"], input[type="password"]{    min-height: 24px;    border: 1px solid #acbbc2;    transition: border-color 0.2s ease-out;    outline: 0;    box-sizing: border-box;    padding: 9px 5px;    width: 100%;}input{    font-family: Arial, Tahoma, Verdana, sans-serif;    font-size: 1em;     -webkit-writing-mode: horizontal-tb;    letter-spacing: normal;    word-spacing: normal;    text-transform: none;    text-indent: 0px;    text-shadow: none;    display: inline-block;    text-align: start;    text-rendering: auto;    -webkit-rtl-ordering: logical;}li{  vertical-align: baseline;  margin: 0;  border: 0px;  display: list-item;  list-style-type:none}</style></head><body style><div class="msg-bad-global" id="msg-bad-global"></div><div class="article"><div class="server-name"></div><!-- 暂时不用,因为不懂--><div class="signin-container"><div class="signin-logo"></div><form method="post" action="{{ url_for('userLogin') }}"  enctype=multipart/form-data accept-charset="utf-8"><ul><li><label for="name">用户名</label><input type="text" id="name" name="name" value="" maxlength="255" autofocus="autofocus"></li><li><label for="password">密码</label><input type="password" id="password" name="password" value="" maxlength="255">{% if get_flashed_messages() %}{% for x in get_flashed_messages() %}<div>{{x}}</div>{% endfor %}{% endif %}<!-- 上面的其实{% if get_flashed_messages() %}<div>{{get_flashed_messages()[0]}}</div>{% endif %} 就可以了。--></li><li><label for="autologin"><input type="checkbox" id="autologin" name="autologin" value="1" checked="checked">Remember me for 30 days</label></li><li><button type="submit" id="enter" name="enter" value="Sign in">登录</button></li></ul></form></div></body></html>



login.py

#encoding:utf-8from flask import Flask,render_template,request,flash,url_forapp = Flask(__name__)app.secret_key = "he234zse"@app.route("/")def hello(name=None):    return render_template('index.html')@app.route("/userLogin",methods=['POST'])def userLogin():    form = request.form    username = form.get("name")    password = form.get("password")    if  not username:        flash(u"%s"%username)        return render_template("index.html")    if  not password:        flash(u"密码为空")        return render_template("index.html")    if username=='123' and password=='123':        flash("ok!")        return render_template("index.html")    else:        flash(u"账号或者密码错误!")        return render_template("index.html")if __name__ == '__main__':    app.run(host='0.0.0.0',debug=True)

暂时的效果如下:
这里写图片描述
++++++++++++++
待完成。。。

原创粉丝点击