栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Python

Flask框架初学-01

Python 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Flask框架初学-01

一、Flask简介

​ Flask是一种使用python编写的轻量级的web微框架,它可以很好地结合MVC模式进行开发,具有很强的兼容性和扩展性,用户可以根据自己的需求来添加相应的功能,其 WSGI 工具箱采用 Werkzeug ,模板引擎则使用 Jinja2 。Werkzeug库十分强大,功能比较完善,支持URL路由请求集成,一次可以响应多个用户的访问请求;支持Cookie和会话管理,通过身份缓存数据建立长久连接关系,并提高用户访问速度;支持交互式Javascript调试,提高用户体验;可以处理HTTP基本事务,快速响应客户端推送过来的访问请求。Jinja2库支持自动HTML转移功能,能够很好控制外部黑客的脚本攻击。

Flask的基本模式为在程序里将一个视图函数分配给一个URL,每当用户访问这个URL时,系统就会执行给该URL分配好的视图函数,获取函数的返回值并将其显示到浏览器上(百度摘录):

flask参考教程:
https://www.w3cschool.cn/flask/
https://dormousehole.readthedocs.io/en/latest

二、环境准备 创建虚拟环境

注:创建独立项目虚拟机的目的是为了防止因其它项目毁坏环境,导致该项目无法运行的情况。以下是一些虚拟机常用命令

pip install virtualenv 

创建虚拟环境

mkvirtualenv 环境名

切换虚拟环境

workon 环境名

列出虚拟环境

lsvirtualenv

删除虚拟环境

rmvirtualenv
安装Flask

注:高于1.1.2版本的flask可能会出现不兼容的情况

pip install flask  == 1.1.2

安装Flask时,会自动安装以下依赖:

依赖
Werkzeug用于实现 WSGI ,应用和服务之间的标准 Python 接口
Jinja用于渲染页面的模板语言
MarkupSafe与 Jinja 共用,在渲染页面时用于避免不可信的输入,防止注入攻击
ItsDangerous保证数据完整性的安全标志数据,用于保护 Flask 的 session cookie
Click是一个命令行应用的框架。用于提供 flask 命令,并允许添加自定义 管理命令
三、项目启动 flask框架项目结构

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-w2dwYknG-1651652343727)(assets/Flask框架初学/image-20220429194633046.png)]

static一般用来存放一些静态文件,如css、images、js等

templates用来存放模板,即html前端界面

app.py是整个程序运行的入口

一个简单的flask应用

可以通过一个简单的example,进入到flask的世界

settings.py 配置文件,可配置不同环境的不同变量

# 配置文件
ENV = 'development'
DEBUG = True

index.html




    
    Title


注册

登录

展示

register2.html




    
    Title


欢迎来到我的学习乐园

app.py

import json

from flask import Flask, Response, request, render_template, url_for
from werkzeug.utils import redirect

import settings

# 创建一个Flask实例
app = Flask(__name__)
# 导入外部文件,这里导入settings配置
app.config.from_object(settings)   
'''
print(app.config)
返回一个字典:

'''

data = {'a':'北京','b':'上海','c':'深圳'}

users = []

# 修改环境 环境有:production   development testing
# app.config['ENV'] = 'development'

# 修改debug的状态
# app.config['DEBUG'] = True



# 默认ip为 127.0.0.1:5000  这里的'/'指的是http://127.0.0.1:5000/  endpoint 为路径命名
@app.route('/',endpoint='index')
def hello_word():
    return render_template('index.html')


@app.route('/register')
def register():
    # 默认从templates文件夹里查询.html文件
    # r = render_template('register.html')
    r = render_template('register2.html')
    print(r)
    return r

@app.route('/come', methods=['GET','POST'])
def come():
    print(request.full_path)
    print(request.path)
    # 只能取到GET请求的传参
    print(request.args)
    # print(request.args.get('username'))
    # print(request.args.get('address'))
    # 可以取到POST请求的传参
    print(request.form)
    print(request.form.get('username'))
    print(request.form.get('address'))
    return "进来了"

@app.route('/register2',methods=['GET','POST'])
def register2():
    username = request.form.get('username')
    password = request.form.get('password')
    repassword = request.form.get('repassword')
    if password == repassword and username != '':
        user = {'username':username,'password':password}
        users.append(user)
        # 重定向到名为index的路径'/'
        return redirect(url_for('index'))
        # return 'register success !'
    return render_template('register2.html')

@app.route('/show')
def show():
    json_str = json.dumps(users)
    return json_str

@app.route('/test')
def test():
    url = url_for('index')
    print(url)

# 绑定路由规则
# app.add_url_rule('/index',view_func=index)

if __name__ == '__main__':
    # 路由规则表
    # print(app.url_map)
    # host改成0.0.0.0,同一局域网下的其他主机可进行访问
    # debug默认为off,即false,代码发生改变不会自动加载 适用于production环境;debug=True,只要代码发生改变,服务器会重新加载最新代码 适用于开发环境     development
    # run(host='0.0.0.0',port='',debug='True')
    # app.run(port=8008)
    app.run()

访问结果:

知识点:

知识点1:
	设置配置文件settings,环境:production   development   testing
		ENV = 'development'
		DEBUG = True


	导入外部文件,这里导入settings配置
		import setting
		1、app.config.from_object(settings)
		2、app.config.from_pyfile('settings')

	引用配置文件settings:
		print(app.config) ---->字典
		app.config['ENV'] = 'development'
		app.config['DEBUG'] = True

知识点2:
	app.run(host='0.0.0.0',port=5001,debug=True)
	debug:布尔型
	debug = True  开启了debug调试模式  只要改变服务器代码会重新加载最新的代码 适用于开发环境development
	debug = False 默认 代码发生改变不会自动加载  适用于production环境

知识点3:
	路由(下一章详解):
		# 默认ip为 127.0.0.1:5000  这里的'/'指的是http://127.0.0.1:5000/  endpoint 为路径命名
		@app.route('/',endpoint='index')
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/857035.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号