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
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 | <! 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 > |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 | <! 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 > |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | <! 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 > |
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构