FLASK学习笔记01--基础

前言:
我的笔记持续在notion更新,欢迎观看交流,求star~
https://www.notion.so/FLASK-STUDY-NOTE-897db25a787a4f85a05034a54a7925d3

Windows下运行Flask项目

C:\path\to\app>set FLASK_APP=hello.py (你的项目名.py)
C:\path\to\app>flask run

如果你需要让你的服务器公开,可以在运行时添加代码:

flask run --host=0.0.0.0

如果你打开 调试模式,那么服务器会在修改应用代码之后自动重启,并且当应用出错时还会提供一个 有用的调试器。

如果需要打开所有开发功能(包括调试模式),那么要在运行服务器之前导出 FLASK_ENV 环境变量并把其设置为 development:

set FLASK_ENV=development
flask run

还可以通过导出 FLASK_DEBUG=1来单独控制调试模式的开关。

路由

使用 **[route()](https://flask.net.cn/api.html#flask.Flask.route)**装饰器来把函数绑定到 URL:

@app.route('/')
def index():
    return 'Index Page'

@app.route('/hello')
def hello():
    return 'Hello, World'

构建动态url

**[url_for()](https://flask.net.cn/api.html#flask.url_for)**函数用于构建指定函数的 URL。它把函数名称作为第一个 参数。它可以接受任意个关键字参数,每个关键字参数对应 URL 中的变量。未知变量 将添加到 URL 中作为查询参数。

from flask import Flask, escape, url_for

app = Flask(__name__)

@app.route('/')
def index():
    return 'index'

@app.route('/login')
def login():
    return 'login'

@app.route('/user/<username>')
def profile(username):
    return '{}\'s profile'.format(escape(username))     #replace the character from {} to escape()

with app.test_request_context():
    print(url_for('index'))
    print(url_for('login'))
    print(url_for('login', next='/'))
    print(url_for('profile', username='John Doe'))

HTTP方法

Web 应用使用不同的 HTTP 方法处理 URL 。当你使用 Flask 时,应当熟悉 HTTP 方法。 缺省情况下,一个路由只回应 GET请求。 可以使用 **[route()](https://flask.net.cn/api.html#flask.Flask.route)**装饰器的 methods参数来处理不同的 HTTP 方法:

@app.route('/login', methods=['GET', 'POST'])
def login():
    if request.method == 'POST':
        return do_the_login()
    else:
        return show_the_login_form()

静态文件

我们一般使用static文件夹放置项目的CSS和JavaScript文件

使用特定的 'static'端点就可以生成相应的 URL

url_for('static', filename='style.css')

这个静态文件在文件系统中的位置应该是 static/style.css

渲染模板(使用html)

使用 **[render_template()](https://flask.net.cn/api.html#flask.render_template)**方法可以渲染模板,你只要提供模板名称和需要 作为参数传递给模板的变量就行了。下面是一个简单的模板渲染例子:

from flask import render_template

@app.route('/hello/')
@app.route('/hello/<name>')
def hello(name=None):
    return render_template('hello.html', name=name)

Flask 会在 templates文件夹内寻找模板。因此,如果你的应用是一个模块, 那么模板文件夹应该在模块旁边;如果是一个包,那么就应该在包里面:

情形 1: 一个模块:

/application.py
/templates
    /hello.html

情形 2: 一个包:

/application
    /__init__.py
    /templates
        /hello.html

更多模板使用/list方法:Template Designer Documentation — Jinja Documentation (3.1.x) (palletsprojects.com)

上传文件

  1. HTML 表单中设置 enctype="multipart/form-data"属性
  2. 已上传的文件被储存在内存或文件系统的临时位置。你可以通过请求对象 files
    属性来访问上传的文件。每个上传的文件都储存在这个 字典型属性中。这个属性基本和标准 Python **file**对象一样,另外多出一个 用于把上传文件保存到服务器的文件系统中的 **[save()](https://werkzeug.palletsprojects.com/en/0.15.x/datastructures/#werkzeug.datastructures.FileStorage.save)**方法。
  3. 如果想要把客户端的文件名作为服务器上的文件名, 可以通过 Werkzeug 提供的 **[secure_filename()](https://werkzeug.palletsprojects.com/en/0.15.x/utils/#werkzeug.utils.secure_filename)**函数:
from flask import request
from werkzeug.utils import secure_filename

@app.route('/upload', methods=['GET', 'POST'])
def upload_file():
    if request.method == 'POST':
        f = request.files['the_file']
        f.save('/var/www/uploads/' + secure_filename(f.filename))
    ...

for more:上传文件_Flask中文网

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值