Flask项目之login提交
1 #!/usr/bin/env python 2 # -*- coding: utf-8 -*- 3 # @Time : 2019/11/2 20:53 4 # @Author : zoulixiang 5 # @Site : 6 # @File : s2.py 7 # @Software: PyCharm 8 9 from flask import Flask,render_template,request,redirect,session,url_for 10 11 app = Flask(__name__) 12 #自动重启和检测,调试模式 13 app.debug = True 14 15 USERS = { 16 1:{'name':'z','age':12,'gender':'男','text':'ssssssss'}, 17 2:{'name':'z1','age':13,'gender':'男','text':'xxxxxxxx'}, 18 3:{'name':'z1','age':14,'gender':'女','text':'hhhhhhhh'} 19 } 20 21 @app.route('/detail/<int:nid>',methods=['GET']) 22 def detail(nid): 23 # 当你登录成功之后,session是有值,有值之后上面每个登录都需要重新判断 24 user = session.get('user_info') 25 if not user: 26 return redirect('/login') 27 info = USERS.get(nid) 28 return render_template('detail.html',info=info) 29 30 31 @app.route('/index',methods=['GET']) 32 def index(): 33 #session #当你登录成功之后,session是有值,有值之后上面每个登录都需要重新判断 34 user = session.get('user_info') 35 if not user: 36 #反向生成url 37 url = url_for('l1') 38 return redirect(url) 39 return render_template('index.html',user_dict=USERS) 40 41 42 @app.route('/login',methods=['GET','POST'],endpoint='l1') #endpoin 别名 43 def login(): 44 if request.method == "GET": 45 return render_template('login.html') 46 else: 47 user = request.form.get('user') 48 pwd = request.form.get('pwd') 49 if user == 'alex' and pwd == '123': 50 #当你登录成功之后,session是有值,有值之后上面每个登录都需要重新判断 51 session['user_info'] = user 52 print(session['user_info']) 53 return redirect('https://www.baidu.com') 54 return render_template('login.html',error = '用户名或密码错误') 55 56 if __name__ == '__main__': 57 app.run()
2.tmplates目录
login.html
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Title</title> </head> <body> <h1>用户登录</h1> <form method="post"> <input type="text" name="user"> <input type="text" name="pwd"> <input type="submit" name="登录">{{error}} </form> </body> </html>
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Title</title> </head> <body> <h1>用户列表</h1> <table> {% for k,v in user_dict.items() %} <tr> <td>{{k}}</td> <td>{{v.name}} {{v['name']}} {{v.get('name')}} </td> <td><a href="/detail/{{k}}">查看详细</a></td> </tr> {% endfor %} </table> </body> </html>
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Title</title> </head> <body> <h1>详细信息</h1> <div> {{ info.name }} {{ info.text }} </div> </body> </html>