欧美一级特黄大片做受成人-亚洲成人一区二区电影-激情熟女一区二区三区-日韩专区欧美专区国产专区

python中flask的介紹-創(chuàng)新互聯(lián)

什么是Flask?
Flask是一個Web框架,就是提供一個工具,庫和技術(shù)來允許你構(gòu)建一個Web應用程序.這個Web應用程序
可以是一些Web頁面,博客, wiki ,基于 Web 的日歷應用或商業(yè)網(wǎng)站。
Flask依賴模塊:
web服務(wù)網(wǎng)關(guān)接口(Python Web Server Gateway Interface,縮寫為WSGI
Werkzeug 一個WSGI工具包, 是為python語言定義的web服務(wù)器和web應用程序或框架之間的一
種簡單而通用的借口,其他語言也有類似的接口)
jinja2模板引擎

做網(wǎng)站、網(wǎng)站設(shè)計的開發(fā),更需要了解用戶,從用戶角度來建設(shè)網(wǎng)站,獲得較好的用戶體驗。創(chuàng)新互聯(lián)多年互聯(lián)網(wǎng)經(jīng)驗,見的多,溝通容易、能幫助客戶提出的運營建議。作為成都一家網(wǎng)絡(luò)公司,打造的就是網(wǎng)站建設(shè)產(chǎn)品直銷的概念。選擇創(chuàng)新互聯(lián),不只是建站,我們把建站作為產(chǎn)品,不斷的更新、完善,讓每位來訪用戶感受到浩方產(chǎn)品的價值服務(wù)。

Flask的優(yōu)勢

Flask屬于微框架( micro-framework )這一類別,微架構(gòu)通常是很小的不依賴外部庫的框架.
框架很輕量
更新時依賴小
專注于安全方面的bug

第一個flask程序

from flask import Flask
app = Flask(__name__)  #導入Flask對象

@app.route('/')   #把修飾的函數(shù)注冊為路由
def hello_world():
   return 'Hello World!'

if __name__ == '__main__':
   app.run()

變量規(guī)則

要給url添加變量部分,可以把這些特殊的字符標記為<variable_name> 這部分將會作為命名參數(shù)傳遞到你的函數(shù)

from flask import  Flask
app = Flask(__name__)  #創(chuàng)建對象

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

@app.route('/user/<username>')
def show_user_profile(username):
   # 顯示該用戶名的用戶信息
   return 'User %s'  % username

@app.route('/post/<int:post_id>')
def show_post(post_id):
   # 根據(jù)ID顯示文章,ID是整型數(shù)據(jù)
   return 'Post %d'  % post_id

if __name__ == '__main__':
   app.run()

運行程序?qū)g覽器地址修改成 http://127.0.0.1:5000/user/歷史
則顯示:
python中flask的介紹

構(gòu)建url

如果flask能匹配url,那末你可以用url_info()來給指定的函數(shù)
構(gòu)建url ,他接收函數(shù)名作為第一個參數(shù),也接受對應url規(guī)則的變量部分的命名參數(shù),未知變量部分會添加到url末尾作為查詢參數(shù)

from flask import Flask , url_for
app = Flask(__name__)

@app.route('/')
def hello_world():
   return 'Hello World!'

@app.route('/user/<username>')
def show_user_profile(username):
   # 顯示該用戶名的用戶信息
   return 'User %s' % username

@app.route('/post/<int:post_id>')
def show_post(post_id):
   # 根據(jù)ID顯示文章,ID是整型數(shù)據(jù)
   return 'Post %d' % post_id

@app.route('/url/')
def get_url():
   # 根據(jù)ID顯示文章,ID是整型數(shù)據(jù)
   return url_for('show_post',post_id=2)

if __name__ == '__main__':
   app.run(debug=True)

瀏覽器訪問url:
python中flask的介紹

渲染模板

當用戶訪問程序的根地址時,我們的視圖函數(shù)會向客
戶端返回一行HTML代碼。然而,一個完整的HTML頁面往往需要幾十
行甚至上百行代碼,如果都寫到視圖函數(shù)里,那可真是個噩夢。這樣的
代碼既不簡潔也難于維護,正確的做法是把HTML代碼存儲在單獨的文
件中,以便讓程序的業(yè)務(wù)邏輯和表現(xiàn)邏輯分離,即控制器和用戶界面的
分離。
在動態(tài)Web程序中,視圖函數(shù)返回的HTML數(shù)據(jù)往往需要根據(jù)相應
的變量(比如查詢參數(shù))動態(tài)生成。當HTML代碼保存到單獨的文件中
時,我們沒法再使用字符串格式化或拼接字符串的方式來在HTML代碼
中插入變量,這時我們需要使用模板引擎(template engine)。借助模
板引擎,我們可以在HTML文件中使用特殊的語法來標記出變量,這類
包含固定內(nèi)容和動態(tài)部分的可重用文件稱為模板(template)。
模板引擎的作用就是讀取并執(zhí)行模板中的特殊語法標記,并根據(jù)傳
入的數(shù)據(jù)將變量替換為實際值,輸出最終的HTML頁面,這個過程被稱
為渲染(rendering)。Flask默認使用的模板引擎是Jinja2,它是一個功
能齊全的Python模板引擎,除了設(shè)置變量,還允許我們在模板中添加if
判斷,執(zhí)行for迭代,調(diào)用函數(shù)等,以各種方式控制模板的輸出。對于
Jinja2來說,模板可以是任何格式的純文本文件,比如HTML、XML、
CSV、LaTeX等

在該文件下創(chuàng)建templates文件夾,然后創(chuàng)建2個文件,分別命名為index.html和user.html 然后render.py 渲染這些模板

render.py

from flask import  Flask, render_template
app= Flask(__name__)

@app.route('/')
def hello_world():
   return render_template('index.html',name='經(jīng)驗')

@app.route('/user/<username>')
def show_user_profile(username):
   # 顯示該用戶名的用戶信息
   return render_template('user.html', name=username)

if __name__ == '__main__':
   app.run(debug=True)

user.html

<!DOCTYPE html>
<html lang="en">
<head>
   <meta charset="UTF-8">
   <title>Title</title>
</head>
<body>
   <h2>hello, {{ name }}!</h2>

</body>
</html>

index.html

<!DOCTYPE html>
<html lang="en">
<head>
   <meta charset="UTF-8">
   <title>Title</title>
</head>
<body>
   <h2>hello {{ name }} </h2>

</body>
</html>

瀏覽器:
python中flask的介紹
python中flask的介紹

模板語法

利用Jinja2這樣的模板引擎,我們可以將一部分的程序邏輯放到模
板中去。簡單地說,我們可以在模板中使用Python語句和表達式來操作
數(shù)據(jù)的輸出。但需要注意的是,Jinja2并不支持所有Python語法。而且
出于效率和代碼組織等方面的考慮,我們應該適度使用模板,僅把和輸
出控制有關(guān)的邏輯操作放到模板中。
Jinja2允許你在模板中使用大部分Python對象,比如字符串、列
表、字典、元組、整型、浮點型、布爾值。它支持基本的運算符號
(+、-、*、/等)、比較符號(比如==、!=等)、邏輯符號(and、
or、not和括號)以及in、is、None和布爾值(True、False)。
Jinja2提供了多種控制結(jié)構(gòu)來控制模板的輸出,其中for和if是最常用
的兩種。在Jinja2里,語句使用{%...%}標識,尤其需要注意的是,在語
句結(jié)束的地方,我們必須添加結(jié)束標簽:
{% if user.bio %}
<i>{{ user.bio }}</i>
{% else %}
<i>This user has not provided a bio.</i>
{% endif %}

在這個If語句里,如果user.bio已經(jīng)定義,就渲染{%if user.bio%}和
{%else%}之間的內(nèi)容,否則就渲染{%else%}和{%endif%}之間的默認內(nèi)容。末尾的{%endif%}用來聲明if語句的結(jié)束,這一行不能省略。
和在Python里一樣,for語句用來迭代一個序列:
<ul>
{% for movie in movies %}
<li>{{ movie.name }} - {{ movie.year }}</li>
{% endfor %}
</ul>

jinja2 模板引擎

1. 什么是Jinja2模板引擎?

  • 官方網(wǎng)址: http://docs.jinkan.org/docs/jinja2/
    Jinja2 是一個現(xiàn)代的,設(shè)計者友好的,仿照 Django 模板的 Python 模板語言。 它速度快,被廣泛使用,并且提供了可選的沙箱模板執(zhí)行環(huán)境保證安全:
  • 1). python的Web開發(fā)中, 業(yè)務(wù)邏輯(實質(zhì)就是視圖函數(shù)的內(nèi)容)和頁面邏輯(html件)分開的, 使得代碼的可讀性增強, 代碼容易理解和維護;
  • 2). 模板渲染: 在html文件中,通過動態(tài)賦值 ,將重新翻譯好的html文件(模板引擎生效) 返回給用戶的過程。
  • 3). 其他的模板引擎: Mako, Template, Jinja2

2. Jinja2語法

Jinja2變量顯示語法:

{{ 變量名| 函數(shù)調(diào)用 }}

{{ name }}
{{ url_for() }}
{{ get_flshed_messages() }}

Jinja2變量內(nèi)置過濾器:

"hello".lower()

  • 完整的過濾器查看位置: http://jinja.pocoo.org/docs/templates/#builtin-filters
safe       渲染值時不轉(zhuǎn)義
capitalize    把值的首字母轉(zhuǎn)換成大寫,其他字母轉(zhuǎn)換成小寫
lower      把值轉(zhuǎn)換成小寫形式
upper      把值轉(zhuǎn)換成大寫形式
title      把值中每個單詞的首字母都轉(zhuǎn)換成大寫
trim       把值的首尾空格去掉
striptags    渲染之前把值中所有的 HTML 標簽都刪掉

如何自定義過濾器?

for循環(huán):

     {% for i in li%}
       xxx
     {% endfor %}

if語句

     {% if user == 'westos'%}
       xxxx
     {% elif user == 'hello' %}
       xxx
     {% else %}
       xxx
     {% endif%}

宏的操作

  • 相當于函數(shù)

    如何定義宏?

     <!--相當于python里面的定義函數(shù), 后面使用的場景: 分頁顯示-->
     {%  macro render(id) %}
       <h2>hello world {{ id }}</h2>
     {% endmacro %}

如何調(diào)用宏?

   <!--調(diào)用定義好的宏(類似于python中的函數(shù))-->
   {{ render(1) }}
   {{ render(2) }}
   {{ render(3) }}

include包含操作

  • 如何使用: {% include  "06_inclued.html"%}

模板的繼承:

一般網(wǎng)站的導航欄和底部不會變化, 為了避免重復編寫導航欄信息;

  • 如何定義模板?
<!DOCTYPE html>
<html lang="en">
<head>
   <meta charset="UTF-8">
   <title>{% block title %}  {% endblock %}</title>
</head>
<body>
<div  > 這是導航欄</div>
{% block body %}
hello
{% endblock %}
<div  >這是底部</div>
</body>
</html>

- 如何繼承基模板?

{% extends  '06_base.html'%}
{% block title %}
   繼承案例
{% endblock %}
{% block body %}
<span >這是最新填的block內(nèi)容</span>
{% endblockfrom flask  import  Flask, render_template

例:模板繼承py:

app = Flask(__name__)
@app.route('/')
def index():
   return  render_template('index.html')

@app.route('/bbs/')
def bbs():
   return  render_template('bbs.html')

@app.route('/blog/')
def blog():
   return  render_template('blog.html')
if __name__ == '__main__':
   app.run(port=5002) %}

base.html

<!DOCTYPE html>
<html lang="en">
<head>
   <meta charset="UTF-8">
   <title>{% block title %} {% endblock %}</title>
   <style>
     .nav{
       width: 100%;
       height: 50px;
       border: 1px solid red;
     }
     .left{
       width: 20%;
       border: 1px solid red;
       float: left;
       height: 100px;
     }

     .right{
       width: 79%;
       border: 1px solid green;
       float: left;
       height: 100px;
     }
   </style>
</head>
<body>

<div class="nav">
   導航欄
   <button>登錄</button>
   <button>注冊</button>
</div>

<div class="left">
   {% include 'left.html' %}

</div>

<div class="right">
   {% block body %}

   {% endblock %}
</div>

</body>
</html>

bbs.html

{% extends 'base.html' %}

{% block title %}

論壇
{% endblock %}
{% block body %}
<h2>bbs</h2>

blog.html

{% extends 'base.html' %}
{% block title %}

博客
{% endblock %}

{% block body %}
<h2>blog</h2>

index.html

{% extends 'base.html' %}

{% block title %}

主頁
{% endblock %}
{% block body %}
<h2>index</h2>

left.html

<ul>
   <li>新聞</li>
   <li>財經(jīng)</li>
   <li>八卦</li>
<url>

另外有需要云服務(wù)器可以了解下創(chuàng)新互聯(lián)cdcxhl.cn,海內(nèi)外云服務(wù)器15元起步,三天無理由+7*72小時售后在線,公司持有idc許可證,提供“云服務(wù)器、裸金屬服務(wù)器、高防服務(wù)器、香港服務(wù)器、美國服務(wù)器、虛擬主機、免備案服務(wù)器”等云主機租用服務(wù)以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡單易用、服務(wù)可用性高、性價比高”等特點與優(yōu)勢,專為企業(yè)上云打造定制,能夠滿足用戶豐富、多元化的應用場景需求。

本文題目:python中flask的介紹-創(chuàng)新互聯(lián)
網(wǎng)頁地址:http://aaarwkj.com/article28/ieejp.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供微信小程序、微信公眾號、網(wǎng)站設(shè)計公司搜索引擎優(yōu)化、企業(yè)網(wǎng)站制作、建站公司

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)

網(wǎng)站托管運營
久久久国产精品9999综合| 国产在线精彩视频自拍| 欧美激情欧美狂野欧美精品| 蜜桃av在线播放视频| 日韩一区二区高清看片| 高清日韩精品视频在线观看| 最近最新免费成人在线视频| 久草福利在线观看免费| 91精品国产综合久久不国产大片| 亚洲一区精品二人人爽久久| 久久最新视频中文字幕| 人妻少妇中文字幕久久| 亚洲丰满毛茸茸毛茸茸| 婷婷丁香久久五月婷婷| 国产放荡av剧情精品| 亚洲精品污一区二区三区| 亚洲精品天堂av免费看| 国产av一区二区三区久久| 日韩在线一区二区视频| 国产精品亚洲二区三区| 91成年精品一区在线观看| 日本免费一区二区在线视频| 亚洲av综合色区一区| 变态另类欧美国产在线| 日韩电影在线一本二本三本| 日韩一区二区三区四区精品| 国产高清在线不卡一区| 人妻中文字幕精品系列| 婷婷五激情五月激情片| 午夜福利福利一区二区| 97免费公开在线观看| 久久精品亚洲夜色国产av| 国产一区二区精品久久岳| 亚洲乱码中文字幕久久| 朋友的尤物人妻中文字幕| 国产日产亚洲综合一区| 国产精品超碰在线观看| 国产欧美一区二区三区高清| 日韩精品大全一区二区| 91欧美在线激情视频| 日本高清一区二区高清|