书接上文Python Flask教程学习01

文章目录

  • Flask 教程
    • Flask 会话
    • Flask 消息闪现
    • Flask 文件上传
    • Flask 扩展/寻找扩展

Flask 教程

Flask 会话

与Cookie不同,Session(会话)数据存储在服务器上。会话是客户端登录到服务器并注销服务器的时间间隔。需要在该会话中保存的数据会存储在服务器上的临时目录中。

from flask import render_template
from flask import make_response
from flask import Flask,session,redirect,url_for,escape,request
app=Flask(__name__)
#为每个客户端的会话分配会话ID。
#会话数据存储在cookie的顶部,服务器以加密方式对其进行签名。
#对于此加密,Flask应用程序需要一个定义的SECRET_KEY。(随便写)
app.secret_key='fkdjsafjdkfdlkjfadskjfadskljdsfklj'@app.route('/')
def index():if 'username' in session:username=session['username']return '登录用户名是:'+username+'<br>'+\"<b><a href='/logout'>点击这里注销</a></b>"return "您暂未登录,<br><a href='/login'></b>"+\"点击这里登录</b></a>"
@app.route('/login',methods=['GET','POST'])
def login():if request.method=='POST':#设置会话变量session['username']=request.form['username']return redirect(url_for('index'))return '''<form action="" method="post"><p><input type="text" name="username"/></p><p><input type="submit" value="登录"/></p></form>'''
@app.route('/logout')
def logout():#释放会话变量session.pop('username',None)return redirect(url_for('index'))
if __name__ == '__main__':app.run(debug=True)

http://127.0.0.1:5000/



Flask 消息闪现

from flask import Flask, flash, redirect, render_template, request, url_for
app = Flask(__name__)
app.secret_key = 'random string'
@app.route('/')
def index():return render_template('index.html')@app.route('/login', methods = ['GET', 'POST'])
def login():error = Noneif request.method == 'POST':if request.form['username'] != 'admin' or request.form['password'] != 'admin':error = 'Invalid username or password. Please try again!'#如果登录成功,则会在索引模板上刷新成功消息。else:'''flash(message, category)message 参数是要闪现的实际消息。category 参数是可选的。它可以是“error”,“info”或“warning”。'''flash('You were successfully logged in')return redirect(url_for('index'))#如果出现错误,则会重新显示登录模板,并显示错误消息。return render_template('login.html', error = error)if __name__ == '__main__':app.run(debug=True)

login.html

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><title>Login</title>
</head>
<body><form method = "post" action = "http://localhost:5000/login"><table><tr><td>Username</td><td><input type = 'username' name = 'username'></td></tr><tr><td>Password</td><td><input type = 'password' name = 'password'></td></tr><tr><td><input type = "submit" value = "Submit"></td></tr></table></form>{% if error %}<p><strong>Error</strong>: {{ error }}</p>{% endif %}
</body>
</html>

index.html

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><title>Index</title>
</head>
<body><!-- 为了从会话中删除消息,模板调用 get_flashed_messages(with_categories, category_filter)。两个参数都是可选的。如果接收到的消息具有类别,则第一个参数是元组。第二个参数仅用于显示特定消息。-->{% with messages = get_flashed_messages() %}{% if messages %}{% for message in messages %}<p>{{ message }}</p>{% endfor %}{% endif %}{% endwith %}
<h3>Welcome!</h3>
<a href = "{{ url_for('login') }}">login</a>
</body>
</html>


点击登录链接(用户名及密码在程序里设置,例子给的都是admin)

提交后显示

Flask 文件上传

新建文件夹upload用来保存成功上传后的文件

from flask import Flask,render_template,request
'''
目标文件的名称可以是硬编码的,
也可以从 ​request.files[file] ​对象的​ filename ​属性中获取。
但是,建议使用 ​secure_filename()​ 函数获取它的安全版本。
'''
from werkzeug.utils import secure_filename
import osapp=Flask(__name__)
#定义上传文件夹的路径
#app.config['MAX_CONTENT_LENGTH'] 指定要上传的文件的最大大小(以字节为单位)
app.config['UPLOAD_FOLDER']='upload/'@app.route('/upload')
def upload_file():return render_template('upload.html')
@app.route('/uploader',methods=['GET','POST'])
def uploader():if request.method=='POST':f=request.files['file']print(request.files)#secure_filename获取中文文件名需自行百度解决,不难f.save(os.path.join(app.config['UPLOAD_FOLDER'],secure_filename(f.filename)))return 'file uploaded successfully'else:return render_template('upload.html')
if __name__ == '__main__':app.run(debug=True)

upload.html

<html>
<head><title>File Upload</title>
</head>
<body><form action="http://localhost:5000/uploader" method="POST" enctype="multipart/form-data"><input type="file" name="file"  /><input type="submit" value="提交" /></form>
</body>
</html>

http://localhost:5000/upload

我选了一张图片提交
注意secure_filename获取中文文件名时,中文会被省略。网上有很多博客写了解决办法,我就不做更改了

显示提交成功

上传后的文件被保存在了upload文件夹

Flask 扩展/寻找扩展


Flask 的扩展通常命名为Flask-Foo或者Foo-Flask
通过pip安装
寻找Flask扩展地址
这篇博客就先到这里
下一篇博客再对几个扩展做进一步学习

Python Flask教程学习02相关推荐

  1. Python Flask教程学习03

    书接上文Python Flask教程学习02 文章目录 Flask 教程 Flask 邮件(Flask-Mail) Flask Mysql及Flask SQLAlchemy 创建数据表 插入数据 查询 ...

  2. Python Flask教程学习01

    教程来源于w3cschool,我跟着敲一遍,做一遍 Flask是一个轻量级的可定制框架,使用Python语言编写,较其他同类型框架更为灵活.轻便.安全且容易上手.它可以很好地结合MVC模式进行开发,开 ...

  3. Python Flask教程

    Welcome to Python Flask tutorial. In previous lesson we have learnt about python lambda. Python flas ...

  4. 无敌python爬虫教程学习笔记(一)

    python爬虫系列文章目录 无敌python爬虫教程学习笔记(一) 无敌python爬虫教程学习笔记(二) 无敌python爬虫教程学习笔记(三) 无敌python爬虫教程学习笔记(四) 本文目录 ...

  5. 无敌python爬虫教程学习笔记(二)

    系列文章目录 无敌python爬虫教程学习笔记(一) 无敌python爬虫教程学习笔记(二) 无敌python爬虫教程学习笔记(三) 无敌python爬虫教程学习笔记(四) 手刃一个小爬虫 系列文章目 ...

  6. 全栈Python Flask教程-建立社交网络

    Learn how to build a basic social platform with the Python Flask web framework. 了解如何使用Python Flask网络 ...

  7. Python基础教程学习笔记:第一章 基础知识

    Python基础教程 第二版 学习笔记 1.python的每一个语句的后面可以添加分号也可以不添加分号:在一行有多条语句的时候,必须使用分号加以区分 2.查看Python版本号,在Dos窗口中输入&q ...

  8. python基础教程-学习python有什么好的视频教程?

    干货来袭,以下均为python好的学习视频,我们先从python的入门教程开始分享起! python入门教程(600集)https://www.bilibili.com/video/BV1ex411x ...

  9. 【莫烦Python】Python 基础教程——学习笔记

    文章目录 本笔记基于p1-p29[莫烦Python]Python 基础教程 大家可以根据代码内容和注释进行学习. 安装 我的:python3.8+anaconda+VS code print() pr ...

最新文章

  1. 小程序web开发框架-weweb介绍
  2. hls fifo_【FCCM2020】HLS 高手对比 Verilog 高手,到底输哪了?
  3. Android系统架构-[Android取经之路]
  4. 简单实现ibatis的物理分页
  5. 微软XAML Studio - WPF, UWP, Xamarin等技术开发者的福音
  6. 一文理解 K8s 容器网络虚拟化
  7. mPaaS小程序技术架构深度解析
  8. 【举栗子】Docker 容器磁盘占满的几种情况 | CSDN博文精选
  9. 如何检测圣诞树? [关闭]
  10. Win11正式版版号 Win11正式版最新版本号介绍
  11. 原生JS实现Ajax下载文件
  12. mysql 查询索引
  13. 毕设+电路板(BTN7960驱动电路+LM2596/AMS117稳压电路+蜂鸣器+STM32F103C8T6最小系统电路)
  14. 顶级域名、一级域名、二级域名与IP
  15. 知道SG函数是干什么的
  16. mysql 数组_mysql怎么存数组
  17. 数学分析 - 多元函数的微分学
  18. matlab 2016b caffe,请教:在Win7+VS 2013+Matlab R2016b上编译Caffe时遇到问题
  19. 中文代码示例视频演示Python入门教程第五章 数据结构
  20. 论文阅读笔记:Neural Belief Tracker: Data-Driven Dialogue State Tracking

热门文章

  1. English-全国英语翻译证书
  2. 在ArcGIS Pro2.2中玩转聚焦地图
  3. 数值越界mysql_Mysql数据读取越界问题
  4. java集合(容器)
  5. Dev-c++使用方法 Dev-c++怎么用
  6. day06-08面向对象的三大特性
  7. php视频怎么看,教你“如何巧看PHP中文网课程视频,悄悄成为高手?”
  8. python modis数据拼接_python调用HEG工具批量处理MODIS数据的方法及注意事项
  9. 程序员应具备的素质-拨乱反正篇
  10. centos安装qmail_深入研究QMail