一区二区三区日韩精品-日韩经典一区二区三区-五月激情综合丁香婷婷-欧美精品中文字幕专区

分享

Flask一步步搭建web應(yīng)用

 石頭p4g54puvpz 2017-05-10

專 欄

夏軒,Python中文社區(qū)專欄作者。

博客:http://blog.csdn.net/u012734441

  • 1.flask介紹

  • 2.所需工具和環(huán)境

  • 3.搭建flaskApp

  • 4.具體程序編寫

  • 5.綜上

1.flask介紹

flask是一款十分輕量級(jí)的python Web應(yīng)用框架,也被認(rèn)為是一種微框架,我最初喜歡使用是因?yàn)閒lask中提供的那一套使用的注解跟我當(dāng)時(shí)在公司中使用java開發(fā)的系統(tǒng),里面使用的restful的框架jersey的用法比較像,都十分方便,簡(jiǎn)潔,等到我熟悉使用flask框架之后,就挺喜歡這種微框架了,使用方便,配置簡(jiǎn)單,也可以進(jìn)行克重?cái)U(kuò)展,滿足各自的需求,其中在這些里面還有一個(gè)flask restplus,將swagger工具整合到python里面,在進(jìn)行相應(yīng)測(cè)試的時(shí)候十分方便,這個(gè)放到下一期再講。

2.所需工具和環(huán)境

這一次運(yùn)行flask需要使用的flask環(huán)境就不在物理機(jī)上安裝運(yùn)行了,直接使用上一篇講述的virtualenv來安裝flask,寫出來的app demo都是依賴在虛擬環(huán)境運(yùn)行的,以下是我們這次演示所需要的python工具和相應(yīng)包。

  • pycharm 2016

  • virtualenv

  • pytohn 2.7

  • flask

以pycharm作為python ide, virtualenv以python 2.7創(chuàng)建我們的python運(yùn)行環(huán)境,并用 pip install flask,環(huán)境搭建基本就完成了,下面是具體流程。

3.搭建flaskApp


3.1 設(shè)置虛擬化環(huán)境

打開pycharm,新建工程命名為flaskApp,完成后如下:

現(xiàn)在基本是一個(gè)空工程,現(xiàn)在打開控制臺(tái),輸入以下命令,創(chuàng)建虛擬化環(huán)境:

  1. virtualenv venv

控制臺(tái)輸出完成后,將會(huì)在當(dāng)前目錄中創(chuàng)建一個(gè)venv文件夾,里面是我們運(yùn)行python的虛擬化環(huán)境,在這里我并沒有指明使用哪種版本的python環(huán)境是因?yàn)楫?dāng)前系統(tǒng)默認(rèn)的環(huán)境是python2.7,如果想使用python3.0以上可以參考前一篇文章virtualenv介紹及基本使用來完成。

現(xiàn)在要做的第二步就是啟動(dòng)當(dāng)前的虛擬化環(huán)境,輸入命令source venv/bin/active,完成后控制臺(tái)將會(huì)如下所示:

(venv) localhost:flaskApp xiaxuan$ 表示我們的虛擬化環(huán)境啟動(dòng)成功,但是現(xiàn)在并不是表示當(dāng)前pycharm中當(dāng)前工程的工作環(huán)境就是venv中的虛擬化環(huán)境,這里要設(shè)置pycharm中的python interpreter改為當(dāng)前項(xiàng)目的運(yùn)行環(huán)境才行。

安裝flask的命令如下:

  1. pip install flask

由于虛擬化環(huán)境,所以不需要root權(quán)限,十分方便。

在安裝完相應(yīng)依賴,設(shè)置好python運(yùn)行環(huán)境后,在項(xiàng)目根目錄下新建requirements.txt文件,這個(gè)文件主要就是記載當(dāng)前項(xiàng)目安裝了那些依賴,文件內(nèi)容如下:

  1. flask==0.12

  2. Jinja2==2.9.5

這是目前安裝的依賴,前面是包名,后面是版本號(hào),由于這個(gè)的存在我們可以直接在項(xiàng)目沒有安裝這些package之前,將所需的package寫進(jìn)來,然后在控制臺(tái)使用pip install -r requirements.txt,就可以將這些依賴全部安裝進(jìn)來。

3.2 搭建flask工作目錄

一個(gè)完整的flask項(xiàng)目的完整目錄以及基本的如下所示:

  • test: 測(cè)試文件的位置

  • templates: html文件存放位置

  • static: 靜態(tài)文件css和js存放位置

  • views.py: 主要接口編寫文件,目前是所有的接口都寫在這里,但是實(shí)質(zhì)上要進(jìn)行一定的分模塊寫接口,這個(gè)涉及到的技術(shù)是blueprint,這個(gè)在后期進(jìn)行講解。

  • models.py: 對(duì)象的定義

  • run.py: 啟動(dòng)運(yùn)行文件

  • config.py: 配置文件

  • manager.py: 用于啟動(dòng)程序以及其他的程序任務(wù)

以上就是簡(jiǎn)單的flask項(xiàng)目基本目錄。

4. 具體程序編寫

4.1源碼

views.py:

  1. # cong:utf-8


  2. from flask import jsonify

  3. from flask import render_template


  4. from app import app



  5. @app.route('/')

  6. def index():

  7.    return render_template('index.html')



  8. @app.route('/hello', methods=['GET', ])

  9. def hello():

  10.    return jsonify(msg='hello world!')

上圖提供兩個(gè)接口,一個(gè)是渲染視圖index.html,一個(gè)是返回json結(jié)果,較為簡(jiǎn)單,而在flask中接口的路由就是一個(gè)簡(jiǎn)簡(jiǎn)單單的注解app.route完成的,指定是哪一種http請(qǐng)求訪問也是非常簡(jiǎn)單的,指定methods即可,methods是一個(gè)數(shù)組,即GET,POST可以同時(shí)在一個(gè)請(qǐng)求之中,但是我們?cè)趯懡涌诘臅r(shí)候,一般都會(huì)區(qū)分清楚。

在上面有一個(gè)

from app import app,這個(gè)需要提一下,這個(gè)在app包中的init.py文件之中聲明的,如下:



  1. <> class='md-section-divider'>


  • # coding:utf-8


  • from flask import Flask


  • app = Flask(__name__)


  • from app import views




  • <> class='md-section-divider'>

  • 在這里聲明了app對(duì)象,在views中我們引用了app,同時(shí)在下面一個(gè)文件run.py中,app起著啟動(dòng)整個(gè)項(xiàng)目的作用,run.py源碼如下:



    1. <> class='md-section-divider'>


  • # coding:utf-8

  • from app import app


  • if __name__ == '__main__':

  •    app.run()

  • 十分簡(jiǎn)單明了,app.run()整個(gè)項(xiàng)目便運(yùn)行起來了,在這里運(yùn)行的時(shí)候,項(xiàng)目是默認(rèn)的端口為5000,如果需要指定端口,app.run()方法中指定port即可。

    4.2 運(yùn)行

    啟動(dòng)run.py后,控制臺(tái)如下:

    控制臺(tái)輸出已經(jīng)在5000端口上運(yùn)行起來,現(xiàn)在我們請(qǐng)求http://localhost:5000,轉(zhuǎn)向界面為:

    這是先前views.py中的第一個(gè)接口,渲染index.html,index.html中的內(nèi)容就是hello world

    訪問第二個(gè)接口,url為http://localhost:5000/hello,結(jié)果如下:

    返回json數(shù)據(jù)。

    5. 綜上

    • flask這種微框架搭建和運(yùn)行都是一種比較簡(jiǎn)單的事情,但是在面對(duì)一些并發(fā)量比較高的場(chǎng)景的時(shí)候,基本就支撐不住了,后續(xù)講述如何應(yīng)對(duì)這一種場(chǎng)景。

    • 在多模塊項(xiàng)目編寫的時(shí)候,接口就不能放在一個(gè)views.py文件之中,需要分模塊存放,這個(gè)涉及到了blueprint技術(shù),在下一期中將講述這個(gè)。

    文中代碼及完整資料已上傳至Python中文社區(qū)小密圈,歡迎討論并下載資料。

    §§

    歡迎加入

    Python中文社區(qū)

    小密圈

      本站是提供個(gè)人知識(shí)管理的網(wǎng)絡(luò)存儲(chǔ)空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點(diǎn)。請(qǐng)注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊一鍵舉報(bào)。
      轉(zhuǎn)藏 分享 獻(xiàn)花(0

      0條評(píng)論

      發(fā)表

      請(qǐng)遵守用戶 評(píng)論公約

      類似文章 更多

      亚洲国产性生活高潮免费视频| 久久综合狠狠综合久久综合| 亚洲精选91福利在线观看| 国产精品一区二区不卡中文 | 国产精品成人免费精品自在线观看| 国产精品视频一区二区秋霞| 国产日韩欧美国产欧美日韩 | 高中女厕偷拍一区二区三区 | 欧美国产日产在线观看| 色偷偷亚洲女人天堂观看| 国产精品一区二区香蕉视频| 好吊妞视频免费在线观看| 日韩精品福利在线观看| 日本东京热加勒比一区二区| 亚洲第一区欧美日韩在线| 狠色婷婷久久一区二区三区| 精品欧美日韩一区二区三区| 国产精品欧美激情在线观看| 国产日韩久久精品一区| 亚洲中文字幕亲近伦片| 98精品永久免费视频| 亚洲香艳网久久五月婷婷| 欧美中文字幕一区在线| 99在线视频精品免费播放| 亚洲一区二区三在线播放| 午夜福利精品视频视频| 亚洲精品一区三区三区| 亚洲高清一区二区高清| 有坂深雪中文字幕亚洲中文| 欧美日韩国产成人高潮| 99少妇偷拍视频在线| 伊人久久青草地婷婷综合| 国产激情一区二区三区不卡| 色婷婷成人精品综合一区| 欧美日韩精品久久亚洲区熟妇人| 欧美日韩在线第一页日韩| 免费高清欧美一区二区视频| 国产美女精品午夜福利视频| 99久只有精品免费视频播放| 东京热电东京热一区二区三区 | 亚洲国产av精品一区二区|