Flask 开发笔记

Flask开发笔记

安装Flask

pip install Flask

获取参数

常用的两种获取参数的方式,get和post

get多用于请求页面,做查询,刷新

post多于提交内容,做更新

post请求不会在url里显示参数名称和值

get请求会在url里显示参数名称和值

POST

前端代码:

<formclass="form-inline"method="post"action="/project">

<divclass="form-group">

<label>关键词</label>

<inputtype="text"class="form-control"placeholder="输入关键词"name="keyword"maxlength="64">

</div>

<buttontype="submit"class="btn btn-default">搜索</button>

需要注意的是:

1,请求方式是post

2,请求url是相对的路径

3,input标签name的值

后端代码:

ifrequest.method=='POST':

keyword=request.form.get('keyword')

print(keyword)

需要注意的是:

1,判断请求方式是不是post

2,取值的方式是

request.form.get('keyword')

通过前端input标签的name的值来获取

GET

第一种方式

前端代码:

<liclass="list-group-item"><ahref="/result?id={{project['id']}}"target="_blank">{{ project['name'] }}</a></li>

构造出来的请求如:/result?id=666

需要注意的是:

1,构造的url为相对路径

后端代码:

ifrequest.method=='GET':

pid=request.args.get('id')

print(pid)

需要注意的是:

1,判断请求方式是不是get

2,取值通过

pid=request.args.get('id')

第二种方式

前端代码:

<liclass="list-group-item"><ahref="/result1/{{project['id']}}"target="_blank">{{ project['name'] }}</a></li>

构造出的请求如:/result/666

后端代码:

@app.route('/result1/<pid>',methods=['GET'])

defresult1(pid):

ifrequest.method=='GET':

# pid = request.args.get('id')

print(pid)

需要注意的是:

1,判断请求方式是不是get

2,获取参数,通过函数参数的方式

3,<>里写的参数名要与函数的参数名相同,才能取到值

生成数据模型

参考链接:https://blog.csdn.net/qq_42553568/article/details/90402059

1,安装三方库

pip install flask-sqlacodegen

2,编写命令

flask-sqlacodegen mysql://root:123456@localhost/spd--outfilemodels.py--flask

flask-sqlacodegen mysql://root:[email protected]/db_name--tablesproject--outfilemodels.py--flask

3,运行命令

URL构建

url_for()用于构建特定函数的url

传值

deffocus_delete():

    ifrequest.method=='GET':

        ukid=request.args.get('id')

        wxid=request.args.get('wxid')

        mysql=Mysql()

        mysql.delete_userkey(ukid)

        returnredirect(url_for('focus',wxid=wxid,title="订阅"))

静态资源

url_for()用于加载静态资源,css,js,img等

<scriptsrc="{{url_for('static',filename='/js/bootstrap.js')}}">

<linkrel="stylesheet"href="{{url_for('static',filename='/css/bootstrap.min.css')}}">

<imgsrc="{{url_for('static',filename='/img/head.png')}}"alt="头像">

直接在url_for中传入static,和文件路径

页面HTML转义

{{project[4]|safe}}

project[4]的内容为html代码字符串,如果直接输出,页面直接会显示html代码,不是预期的效果,加上safe。就是说这个内容是安全的,可以直接转义为html。

整合Bootstrap4

首先是下载相应版本的文件

这个网址

https://v4.bootcss.com/docs/getting-started/download/

直接下载

然后下载jquery和popper,这两个是bootstrap4的依赖库,都需要提前引用。

js这样引入

<scriptsrc="{{url_for('static',filename='/js/popper.js')}}"></script>

<scriptsrc="{{url_for('static',filename='/js/jquery.js')}}"></script>

<scriptsrc="{{url_for('static',filename='/js/bootstrap.js')}}"></script>

css这样引入

<linkrel="stylesheet"href="{{url_for('static',filename='/css/bootstrap.min.css')}}">

如果在其他路径,也可以改url_for的参数,道理是一样的。

有一个坑是,popper.js需要下载umd版本的,不然会报错,引入不成功,下面是地址

<script src="https://cdn.bootcdn.net/ajax/libs/popper.js/2.5.0/umd/popper.js"></script>

可以直接引用,也可以下载到本地,然后相对路径引用,道理相同。

列表遍历

flask页面使用的是jinja2,所以需要熟悉jinja2的语法。

常用语法

继承模版

{% extends 'base.html' %}

声明块

{% block main %}


{% endblock main %}

这个块可以被继承的子页面复用

使用的时候直接

{% extends 'base.html' %}

{% block main %}

<div class="container">

   <div class="row">

       <h1>1234567890</h1>

   </div>

</div>

{% endblock main %}

引用值

后端传值到前端

returnrender_template('myself.html',user=user,title=title)

前端使用

{{title}}

双引号加变量名

遍历列表

前提是你传到页面的内容是一个列表

{% for uk in uks %}

<li class="list-group-item">

{{uk[0]}}

</li>

{% endfor %}

对列表项进行判断

{% if uk[0]|length>1 %}

这里对uk[0]做了长度大于1的判断,在使用列表项的值做判断计算的时候,不需要使用{{}}

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章