FLASK
flask的一些基础
Contents
1.路由及url部分:
如何设置路由 @··.route():
在设置的方法上面加装饰器,当访问指定路由时会调用该方法
@实例化flask对象.route(路由,参数)
变量规则 <>:
这个东西可以动态构建URL。
主要步骤为在装饰器中用<>来标记url中的变量部分,然后传参给方法. 下面是一个例子:
from flask import Flask
app=Flask(__name__)
@app.route('/a/<name>')
def asc(name):
return("hi %s!"%name)
app.run()
通过传入url的变量部分的不同分别返回不同的信息.
同时你也可以在装饰器中在变量部分前加int:,float:,path:,像这样
来框定url变量部分只接受哪种类型的数据,若传入的变量不是框定的数据类型,则直接404
重定向 url_for(),redirect():
重定向到指定方法的url:
redirect(url_for("函数名",目标函数参数=附带过去的参数))
2.模板:
如何调用html文件: render_templates() 函数
return flask.render_templates("··.html",变量名=值)
程序就会在同目录下的templates文件夹下寻找指定html文件并返回.
这里的变量名指的是模板引擎里的变量
jinja2模板的分隔符 {%..%}等:
flask用的模板引擎是jinja2.因此可以调用jinja2的分隔符
在html中插入以下分隔符可以起到动态改变html内容的效果
1.{{控制语句} 可以是一个变量,也可以是一个python语句,来控制此处的输出
2.{% .. %} 控制语句,在html使用如if,for等函数控制展示的内容,比如这种↓
{% if marks>2 %}
<h1>high</h1>
{% else %}
<h1>low</h1>
{% endif %}
3.{# .. #} 添加注释 不知道咋用
4.# ..## 用于行语句 不知道咋用
如何调用静态文件:
很简单,只需在html文件里通过模板即可。静态文件一般放在/static里,也可放其他地方
...src={{url_for('static',filename='··.js')}}
3.表单数据传参 request:
举例:
我们拿做一个登录系统举例。
1.首先我们写出登陆界面的后端,这个简单,直接return出登录界面就可
@app.route("/form")
def form():
return flask.render_template('form.html')
2.编写登陆界面,注意action的地方写希望传参去的方法的路由
<form action='http://localhost:5000/form/formout' method="GET">
3.编写接送参数的后端,这里就需要request对象了。
request对象常用的属性有:
form 用于接收post数据
args.get 用于接收get数据
cookies.get 用于接收cookie键值
method 当前的请求方法
files 下文文件上传再讲
好的,我们后端编写如下, args.get接受get数据,from接受post数据
app.route("/form/formout")
def formout():
user=flask.request.args.get('user') //user=flask.request.form['nm']
passwd=flask.request.args.get('passwd') //passwd=flask.request.from['passwd]
return flask.render_template('formout.html',user=user,passwd=passwd
4.编写登陆后页面的前端,不赘述
make_response: 要返回视图可以直接return文件或内容,但是这样做不利于添加http头部信息之类的,所以用make_response把返回的视图封装起来方便设置一些信息
如何设置cookie:很简单
make_response().set_cookie('键',值)
要设置session,方法如下:
1.设置secret_key: 假设实例化flask对象是app,那么设置session密钥就应该
app.config['SECRET_KEY‘]=·····
2.设置session。
值=flask.session['键']
3.销毁session
flask.session.pop['键',none]
5.文件上传request.files:
和传参大同小异。
0.设置文件上传配置:最常用的还是设置文件上传的目录,假设实例化Flask对象为app
app.config['upload_folder']='目标目录'
1.在前端,form的action指向处理文件的函数,encrypt设置为multipart/form-data
<form action='/upload/check' method='POST' enctype="multipart/form-data">
2.后端,request.files['name']接受上传上来的文件,然后对其用.save('保存文件的名称')即可保存
f=flask.request.files['file']
f.save((f.filename))
6.数据库链接mysql:
一手pymysql库