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的判斷,在使用列表項的值做判斷計算的時候,不需要使用{{}}

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