天天看點

flask html 得到文本框 input的内容_大牛帶你5分鐘建立一個Flask項目!

flask html 得到文本框 input的内容_大牛帶你5分鐘建立一個Flask項目!

準備

安裝:pip install flask

Flask快速入門:http://docs.jinkan.org/docs/flask/quickstart.html#quickstart

快速建構

在項目根目錄下建構:

  • webapp包目錄,存放flask代碼,包内有__init__.py檔案
  • templates目錄,存放模闆檔案
  • static目錄,存放js,css等靜态檔案。其下建立js目錄,放入jquery、echarts的js檔案
  • app.py入口檔案

基本組成

目錄結構如下:

flask html 得到文本框 input的内容_大牛帶你5分鐘建立一個Flask項目!
# /webapp/__init__.py檔案内容from flask import Flask,jsonify#建立應用app = Flask("myweb")#路由和視圖函數@app.route("/")def index():    return "hello flask"@app.route("/json",methods=["GET"]) #清單中指定多個方法def getjson():    d = {"a":1,"b":2,"c":3}    return jsonify(d) #Mime是application/json#列印重要屬性print(*filter(lambda x: not x[0].startswith("__") and x[1],app.__dict__.items()),sep="\n")print("- "*30)print(app.url_map)print(app.template_folder)print(app.static_folder)print("- "*30)
           
  1. 應用:建立出來提供WEB服務的執行個體,也是wsgi的入口
  2. 視圖函數:執行内部代碼輸出響應的内容
  3. 路由:通過route裝飾器建立path到視圖函數的映射關系
#/main.py檔案from webapp import appif __name__ == "__main__":    app.run("127.0.0.1",port=8080,debug=True)
           
  • 啟動main.py檔案
flask html 得到文本框 input的内容_大牛帶你5分鐘建立一個Flask項目!

藍圖

Flask中,基本上都是route裝飾器和視圖函數的映射,如果函數很多,代碼組織結構會非常亂。

藍圖Blueprint,就是Flask中子產品化技術。

  • 建立/web/app/books.py藍圖檔案
#/webapp/books.py檔案from flask import Blueprint,jsonify,render_templatebpbooks = Blueprint("booksapp",__name__,url_prefix="/books")# bpbooks = Blueprint("booksapp",__name__)@bpbooks.route("/",methods=["GET","POST"])def getall():    books = [        (1,"java",20),        (2,"python",40),        (3,"linux",50)    ]    return jsonify(books)# print("= "*30)# for x in bpbooks.__dict__.items():#     print(x)
           
  • 修改/webapp/__init__.py檔案如下:在app中注冊建立的藍圖檔案
#/webapp/__init__.pyfrom flask import Flask,jsonifyfrom .books import bpbooks#建立應用app = Flask("myweb")#路由和視圖函數@app.route("/")def index():    return "hello flask"@app.route("/json",methods=["GET"]) #清單中指定多個方法def getjson():    d = {"a":1,"b":2,"c":3}    return jsonify(d) #Mime是application/json# 注冊藍圖# app.register_blueprint(bpbooks)#如果在app中注冊藍圖時,給定了url_prefix,那麼藍圖内自定義的url_prefix将失效app.register_blueprint(bpbooks,url_prefix="/bookss")#列印重要屬性print(*filter(lambda x: not x[0].startswith("__") and x[1],app.__dict__.items()),sep="\n")print("- "*30)print(app.url_map)print(app.template_folder)print(app.static_folder)print("- "*30)
           
  • 注冊完成後,啟動/main.py檔案

Blueprint構造參數

  • name,藍圖名稱,注冊在app的藍圖字典中用的key
  • import_name,用來計算藍圖子產品所在路徑,一般寫__name__
  • root_path,指定藍圖子產品所在路徑,如果None,使用import_name計算得到
  • template_folder
  • url_prefix,指定本藍圖子產品的路徑字首,app.register_blueprint注冊藍圖時,也可以對目前藍圖指定url_prefix,将覆寫藍圖中的定義。

特别注意,輸出的root_path路徑,說明藍圖有自己一套路徑。

最後app.register_blueprint(bpbooks,url_prefix="/bookss"),url_prefix一定要以/開始,否則報錯,最後路徑以注冊的url_prefix為準

模闆

Flask使用jinja2模闆。

對于應用app來說其模闆是,根目錄下的templates,其下建立index.html

/templates/index.html檔案内容如下

<html ><head>    <meta charset="UTF-8">    <title>xdd webtitle>head><body><h2>歡迎使用flask架構h2><hr>{% for x in userlist  %}{{x}}{% endfor %}body>html>
           

修改/webapp/__init__.py檔案中的index視圖函數,使用模闆渲染函數。

from flask import Flask,jsonify,render_template#建立應用app = Flask("myweb")#路由和視圖函數@app.route("/index.html")def index():    return render_template("index.html", userlist=[        (1, "tom", 20),        (1, "json", 30),    ])
           

jinja2和Django模闆文法一緻,這裡不闡述

在app.jinja_loader屬性中,有下面的語句

@locked_cached_propertydef jinja_loader(self):    """The Jinja loader for this package bound object.    .. versionadded:: 0.5    """    if self.template_folder is not None:        return FileSystemLoader(os.path.join(self.root_path, self.template_folder))
           

說明:不管是app,還是bluepoint,都是使用自己的root_path和模闆路徑拼接成模闆路徑。

可以通過app或者bluepoint檢視app.jinja_loader.searchpath模闆搜尋路徑。

Linux雲計算課程全新更新,雲計算+安全+DevOps上線,改變速約~~~~
flask html 得到文本框 input的内容_大牛帶你5分鐘建立一個Flask項目!
flask html 得到文本框 input的内容_大牛帶你5分鐘建立一個Flask項目!