欧美vvv,亚洲第一成人在线,亚洲成人欧美日韩在线观看,日本猛少妇猛色XXXXX猛叫

新聞資訊

    、Flask的數據庫SQLAlchemy

    1.1 SQLAlchemy簡介:

    SQLAlchemy是一個關系型數據庫框架,它提供了高層的ORM和底層的原生數據庫的操作。

    flask-sqlalchemy是一個簡化了SQLAlchemy操作的flask擴展。


    1.2 SQLAlchemy的使用:

    1.2.1安裝導入: 安裝flask_sqlalchemy

    from flask import Flask

    from flask_sqlalchemy import SQLAlchemy


    1.2.2創建flask的app:

    app=Flask(__name__)


    1.2.3配置SQLAlchemy參數:

    class Config(object):

    """配置參數"""

    # sqlalchemy的配置參數

    SQLALCHEMY_DATABASE_URI="mysql://root:mysql@127.0.0.1:3306/db_python04"

    數據庫類型://用戶名:密碼@數據庫地址:端口號/數據庫名

    # 設置sqlalchemy自動更跟蹤數據庫

    SQLALCHEMY_TRACK_MODIFICATIONS=True


    1.2.4添加配置到app:

    app.config.from_object(Config)


    1.2.5創建數據庫sqlalchemy工具對象:

    db=SQLAlchemy(app)


    1.2.6定義數據庫表:

    class Role(db.Model):

    """用戶角色/身份表"""

    __tablename__="tbl_roles" #表名


    id=db.Column(db.Integer, primary_key=True) #表的主鍵

    name=db.Column(db.String(32), unique=True)

    users=db.relationship("User", backref="role")


    def __repr__(self):

    """定義之后,可以讓顯示對象的時候更直觀"""

    return "Role object: name=%s" % self.name


    1.2.7啟動函數執行的命令:

    if __name__=='__main__':

    # 清除數據庫里的所有數據

    db.drop_all()


    # 創建所有的表

    db.create_all()


    # 創建對象

    role1=Role(name="admin")

    # session記錄對象任務

    db.session.add(role1)

    # 提交任務到數據庫中

    db.session.commit()



    二、數據庫遷移

    2.1首先要在虛擬環境中安裝Flask-Migrate:

    pip install flask-migrate


    2.2導入相關文件:

    from flask_migrate import Migrate,MigrateCommand

    from flask_script import Shell,Manager


    2.3使用Manager管理我們創建的app:

    app=Flask(__name__)

    manager=Manager(app)


    2.4配置數據庫參數,同上1.2.3


    2.5使用migrate將配置的數據庫與app關聯起來:

    #第一個參數是Flask的實例,第二個參數是Sqlalchemy數據庫實例

    migrate=Migrate(app,db)


    2.6在flask-Script中的manager中添加一個db命令:

    manager.add_command('db',MigrateCommand)


    2.7定義模型類,同上1.2.6


    2.8運行管理器:

    if __name__=='__main__':

    manager.run()


    2.9創建遷移倉庫,在命令行輸入:

    #這個命令會創建migrations文件夾,所有遷移文件都放在里面。

    python code.py db init


    2.10創建遷移腳本,同Django類似,有兩個命令:

    #創建自動遷移腳本

    python code.py db migrate -m 'initial migration' #后面為腳本的備注

    #更新數據庫

    python code.py db upgrade



    三、發送郵件

    3.1Flask框架使用Flask-Mail擴展包實現發送郵件功能


    3.2使用QQ郵箱的smtp服務器:


    3.3在代碼中導入Flask-Mail擴展包:

    from flask_mail import Mail, Message


    3.4配置發送郵件需要的參數:

    #配置郵件:服務器/端口/傳輸層安全協議/郵箱名/密碼

    app.config.update(

    DEBUG=True,

    MAIL_SERVER='smtp.qq.com',

    MAIL_PROT=465,

    MAIL_USE_TLS=True,

    MAIL_USERNAME='371673381@qq.com',

    MAIL_PASSWORD='goyubxohbtzfbidd',

    )


    3.5關聯app:

    mail=Mail(app)


    3.6在視圖函數中的處理:

    # sender 發送方,recipients 接收方列表

    msg=Message("This is a test ",sender='371673381@qq.com', recipients=['371673381@qq.com'])

    #郵件內容

    msg.body="Flask test mail"


    #發送郵件

    mail.send(msg)


    四、Flask中的藍圖

    4.1藍圖簡介:藍圖是用于實現單個應用的視圖、模板、靜態文件的集合


    4.2藍圖的初始化:

    #Blueprint必須指定兩個參數,admin表示藍圖的名稱,__name__表示藍圖所在模塊

    admin=Blueprint('admin',__name__)


    4.3注冊藍圖路由:

    @admin.route('/')

    def admin_index():

    return 'admin_index'


    4.4在程序實例中注冊該藍圖:

    app.register_blueprint(admin,url_prefix='/admin')


    五、單元測試

    5.1單元測試的意義:

    Web程序開發過程一般包括以下幾個階段:[需求分析,設計階段,實現階段,測試階段]。其中測試階段通過人工或自動來運行測試某個系統的功能。目的是檢驗其是否滿足需求,并得出特定的結果,以達到弄清楚預期結果和實際結果之間的差別的最終目的。


    5.2測試的分類:單元測試、集成測試、系統測試等,其中單元測試是由開發人員進行的


    5.3單元測試的方法:開發者編寫一小段代碼,檢驗目標代碼的功能是否符合預期。通常情況下,單元測試主要面向一些功能單一的模塊進行。


    5.4單元測試中斷言(assert)的使用:

    5.4.1常用的斷言方法:

    assertEqual 如果兩個值相等,則pass

    assertNotEqual 如果兩個值不相等,則pass

    assertTrue 判斷bool值為True,則pass

    assertFalse 判斷bool值為False,則pass

    assertIsNone 不存在,則pass

    assertIsNotNone 存在,則pass


    5.5單元測試的基本寫法:

    5.5.1定義一個類,繼承自unittest.TestCase:

    import unittest


    class TestClass(unitest.TestCase):

    #該方法會首先執行,方法名為固定寫法

    def setUp(self):

    pass

    #測試代碼,函數命名格式一定以test_開頭

    def test_app_exists(self):

    pass

    #該方法會在測試代碼執行完后執行,方法名為固定寫法

    def tearDown(self):

    pass


    六、Flask的部署

    6.1Flask部署示意圖:


    6.2由上圖可以看出,Flask部署主要方式是Nginx+gunicorn+flask

    其中Gunicorn(綠色獨角獸)是一個Python WSGI的HTTP服務器,

    優點是Gunicorn直接用命令啟動,不需要編寫配置文件,相對uWSGI要容易很多。


    6.3Gunicorn的安裝:pip install gunicorn


    6.4運行Gunicorn

    #指定進程和端口號: -w: 表示進程(worker)-b:表示綁定ip地址和端口號(bind)。

    $gunicorn -w 4 -b 127.0.0.1:5001 運行文件名稱:Flask程序實例名


    6.5安裝Nginx:$sudo apt-get install nginx


    6.6nginx的相關指令:先進入/usr/local/nginx/目錄

    #啟動

    sudo sbin/nginx

    #查看

    ps aux | grep nginx

    #停止

    sudo sbin/nginx -s stop


    6.7修改nginx配置:打開/usr/local/nginx/conf/nginx.conf文件


    server {

    # 監聽80端口

    listen 80;

    # 本機

    server_name localhost;

    # 默認請求的url

    location / {

    #請求轉發到gunicorn服務器

    proxy_pass http://127.0.0.1:5001;

    #設置請求頭,并將頭信息傳遞給服務器端

    proxy_set_header Host $host;

    }

    Flask 入門指南。

    介紹

    在本文中,如果您已經熟悉 Python 編程,我將解釋如何在您的計算機上安裝 Flask 以開發 Web 應用程序。 在 Flask 中,您可以使用 Python 和一些 HTML 和 CSS 創建 Web 應用程序。 我正在逐步解釋過程,以便您可以跟隨我。 我在本教程中使用的是 Mac 計算機。


    1.搭建平臺。

    首先,您需要在計算機上安裝 pip,以便在使用 Flask 進行開發時安裝必要的東西。 使用 pip --version 命令檢查您的計算機中是否有 pip。 如果您的計算機上沒有安裝 pip,請使用以下命令并將 pip 安裝到本地工作站。

    $ curl https://bootstrap.pypa.io/get-pip.py -o get-pip.py  $ python get-pip.py  $ pip --version

    在計算機上安裝 pip 后,您幾乎可以開始使用了。特別是,您可以全局安裝 Flask,也可以在虛擬環境中安裝。在本教程中,我在虛擬環境中安裝 Flask 并運行我們的第一個 Flask 應用程序。

    您可以通過 pip list 命令檢查您的系統上是否已經安裝了 Flask。如果在列表中沒有找到 Flask,請運行 pip install flask 命令安裝 Flask。正如我之前提到的,因為我們在虛擬環境中運行 Flask,所以不需要全局安裝 Flask。


    2.創建第一個Flask App

    接下來,使用 pip list 命令檢查您的系統上是否安裝了 virtualenv。如果沒有,請使用 pip install virtualenv 命令。這將幫助您在虛擬環境中運行應用程序。

    然后導航到您的項目目錄并在終端中運行 virtualenv env 命令。這將在您的項目目錄中創建一個 env 目錄。之后,您需要使用源 env/bin/activate 或 . env/bin/activate 命令[如果您使用的是 Windows 計算機,此命令會有所不同]。現在您在虛擬環境中。

    檢查點子列表,看看你有什么。即使您之前已全局安裝過 Flask,您也不會在列表中看到它。然后,您可以使用 pip install flask 在虛擬環境中安裝 Flask,它不會影響全局。

    接下來,創建一個 app.py 文件并將以下代碼添加到其中。

    from flask import Flask
    app=Flask(__name__)
    @app.route('/')
    def index():
        return '<h1>Hello from Flask!</h1>'
    if __name__=='__main__':
        app.run(debug=True)

    然后,您可以在終端上運行 flask run 命令來啟動 Flask App 并導航到 127.0.0.1:5000 以在瀏覽器中打開該應用程序。


    如果不使用名稱 app.py 作為文件名,則需要使用 .flaskenv 文件將環境變量設置為相關文件。 假設您的文件名為 main.py。 然后您需要創建 .flaskenv 文件并按如下方式設置這些變量。

    FLASK_ENV=development
    FLASK_APP=main.py

    現在,由于您擁有 .flaskenv 文件,因此您需要在運行 flask run 命令之前運行 pip install python-dotenv 命令。 此命令將允許您使用 .flaskenv 文件。 運行 pip install python-dotenv 命令后,運行 deactivate 命令以禁用環境,并使用 source env/bin/activate 命令再次激活虛擬環境。 然后運行 flask run 命令來啟動應用程序并在瀏覽器中查看輸出。


    此外,您可以將所有包保存到一個文本文件中,并且有一天如果您必須將您的項目移動到另一臺計算機上,您不必再次創建 env 目錄。 您可以使用此文本文件來創建它。 使用以下命令將您的包添加到文本文件中。

    $ pip freeze > requirements.txt'requirements.txt' is the file name

    然后在新機器上,您可以運行以下命令以使用文本文件創建 env 文件夾。

    $ pip install -r requirements.txt


    3. 渲染網頁并添加路由

    然后在項目目錄中創建模板、靜態和圖像目錄。 這些目錄分別保存 HTML 頁面、樣式表和圖片。 之后,在靜態目錄中的模板目錄和 CSS 目錄中創建 index.html 文件。 您還可以在 CSS 目錄中添加 main.css 文件。

    此外,您需要將 render_template 模塊導入 app.py 以呈現 HTML 頁面。

    from flask import Flask, render_template
    
    app=Flask(__name__)
    
    
    @app.route('/')
    def index():
      return render_template('index.html')
    
    
    if __name__=='__main__':
      app.run(debug=True)
    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <meta http-equiv="X-UA-Compatible" content="IE=edge">
        <meta name="viewport" content="width=device-width, initial-scale=1.0">
        <title>Home</title>
    </head>
    <body>
        <h1>This is the Home page</h1>
    </body>
    </html>

    然后你可以運行 flask run 命令在瀏覽器上渲染 index.html 文件。


    Web 應用程序通常具有使用戶更容易探索的路由。 目前我們只有一個 HTML 頁面和靜態內容。 接下來,我們將看到如何在 Flask 應用中添加多個頁面并設置路由。

    讓我們創建兩個名為 about.html 和 contact.html 的 HTML 文件。 確保您還將這兩個文件放在模板目錄中。 出于學習目的,我盡可能簡單地創建這兩個文件。

    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <meta http-equiv="X-UA-Compatible" content="IE=edge">
        <meta name="viewport" content="width=device-width, initial-scale=1.0">
        <title>About</title>
    </head>
    <body>
        <h1>About Us</h1>
    </body>
    </html>
    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <meta http-equiv="X-UA-Compatible" content="IE=edge">
        <meta name="viewport" content="width=device-width, initial-scale=1.0">
        <title>Conatct</title>
    </head>
    <body>
        <h1> Contact Us</h1>
        
    </body>
    </html>

    接下來,我們可以將路由添加到我們的 app.py 文件中,如下所示。

    from flask import Flask, render_template
    
    app=Flask(__name__)
    
    
    @app.route('/')
    def index():
        return render_template('index.html')
    
    
    @app.route('/about')
    def about():
        return render_template('about.html')
    
    @app.route('/contact')
    def contact():
        return render_template('contact.html')
    
    
    
    
    if __name__=='__main__':
        app.run(debug=True)

    運行燒瓶運行命令后,您將在瀏覽器上看到這些頁面和導航。


    4. 模板繼承

    模板繼承是您在使用 Flask 開發應用程序時遇到的一個引人入勝的功能。 基本上,模板繼承的作用是,它允許我們為所有 HTML 網頁創建基礎或布局,并僅自定義/添加相關部分,而無需一遍又一遍地從頭開始構建整個 HTML 網頁。

    為了在我們的 Flask 應用程序中實現模板繼承,我們創建了一個 base.html 文件并將其擴展到其他 HTML 文件,如下所示。 這個場景 Jinja2 發揮作用,那些分隔符屬于 Jinja2 。 一般來說,Jinja2 被稱為現代模板語言,供 Python 開發人員創建 HTML、XML 或其他標記格式。

    當你運行命令 pip list 時,你會看到 Jinja2 已經存在并且已經安裝了 Flask。

    讓我們將 base.html 文件創建為普通的 HTML 文件,并在必要時添加 Jinja2 分隔符。

    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <meta http-equiv="X-UA-Compatible" content="IE=edge">
        <meta name="viewport" content="width=device-width, initial-scale=1.0">
        {% block head %}{% endblock%}
    </head>
    <body>
        {% block body %}{% endblock%}
    </body>
    </html>

    這里,{% block head %}{% endblock%} 和 {% block body %}{% endblock%} 是 Jinja2 的分隔符。

    接下來,讓我們相應地修改我們的 index、about 和 contact HTML 文件。

    {% extends 'base.html' %}
    
    {% block head %}
        <title>Home</title>
    {% endblock%}
    
    
    {% block body %}
        <h1>This is the Home page</h1>
    {% endblock%}
    {% extends 'base.html' %}
    
    {% block head %}
        <title>About</title>
    {% endblock%}
    
    
    {% block body %}
        <h1>About page</h1>
    {% endblock%}
    {% extends 'base.html' %}
    
    {% block head %}
        <title>Conatct</title>
    {% endblock%}
    
    
    {% block body %}
        <h1>Contact Us</h1>
    {% endblock%}

    這種方法很容易在我們的網頁上應用和創建動態內容。 接下來,將了解如何在我們的應用程序中添加和呈現動態內容。


    5. 渲染動態內容。

    讓我們在 app.py 文件中創建一個簡單的 Python 列表,并在其中添加必要的更改,如下所示。

    from flask import Flask, render_template
    
    app=Flask(__name__)
    
    
    names=['Randil', 'John', 'Michael']
    
    
    @app.route('/')
    def index():
        return render_template('index.html', names=names, title='Flask')
    
    @app.route('/about')
    def about():
        return render_template('about.html')
    
    @app.route('/contact')
    def contact():
        return render_template('contact.html')
    
    
    
    
    if __name__=='__main__':
        app.run(debug=True)

    并將必要的更改添加到 index.html 中,如下所示。

    {% extends 'base.html' %}
    
    
    {% block head %}
    
            {% if title%}
                <title>Hello - {{ title }}</title>
            {% else %}
                <title> Hello </title>
            {% endif %}
    
    
    {% endblock%}
    
    
    {% block body %}
        
        <h1>Hey {{ names[0] }}, from Flask</h1>
    
        <ul>
            {% for name in names %}
            <li>
                {{ name }}
            </li>
            {% endfor %}
        </ul>
        
        
    {% endblock%}

    同樣,您可以遍歷列表或字典并將值從 Python 應用程序傳遞到 HTML 頁面。


    6. 使用 GET、POST 方法

    通常,我們的網頁上有表單來獲取用戶輸入并據此采取必要的行動。 因此,在本節中,您將學習如何從網頁獲取用戶輸入并將其傳遞給我們的應用程序。

    讓我們創建一個名為 login.html 的新頁面,如下所示。

    {% extends 'base.html' %}
    
    
    {% block head %}
    
           <title>Login</title>
    {% endblock%}
    
    
    
    {% block body %}
        
        <h1>Log In</h1>
    
        <div id="login_form">
            <form action="/login" method="post">
                <p>Username: <input type="text" name="username" size="30"/></p>
                <p>Password: <input type="password" name="password" size="30"/></p>
                <p><button type="submit">Log In</p>
            </form>
        </div>
    
    
    {% endblock%}

    讓我們更新 app.py 應用程序來處理表單請求。 這次我們將 4 個新模塊導入到 app.py 文件中,它們是 request、redirect、url_for 和 flash。

    from turtle import title
    from flask import Flask, render_template,request, redirect, url_for, flash
    
    app=Flask(__name__)
    
    app.config['SECRET_KEY']='de921e121eec1e95642035ca4d39d34b'
    
    names=['Randil', 'John', 'Michael']
    
    
    @app.route('/')
    def home():
        return render_template('index.html', names=names, title='Flask')
    
    @app.route('/about')
    def about():
        return render_template('about.html')
    
    @app.route('/contact')
    def contact():
        return render_template('contact.html')
    
    
    
    @app.route('/login', methods=['GET', 'POST'])
    def login():
        if request.method=='POST':
            username=request.form['username']
            title=username
            flash(f'User {username} successfully logged in!')
            return redirect(url_for('success', username=username, title=title))
        else:
            return render_template('login.html')
    
    @app.route('/success/username:<username>?title:<title>')
    def success(username, title):
       return render_template('success.html', username=username, title=title)
    
    
    
    
    if __name__=='__main__':
        app.run(debug=True)

    要在 Flask 中處理 GET、POST 請求,您需要擁有密鑰。 在上面的 app.py 代碼片段中,我已將該密鑰設置到 app.config['SECRET_KEY'] 中。 您可以為您的應用程序生成一個密鑰,如下所示。

    打開終端的另一個選項卡并運行命令 $ python 。 這將打開 Python shell,然后運行以下命令。

    $  python>>> import secrets
    >>> secrets.token_hex(16)
    'de921e121eec1e95642035ca4d39d34b'
    >>>

    復制該值并將其設置為 app.config['SECRET_KEY']。


    然后,一旦用戶填寫表格并單擊登錄按鈕,結果將顯示在 success.html 文件中。 因此,讓我們按如下方式創建 success.html 文件。

    {% extends 'base.html' %}
    
    
    {% block head %}
    
            {% if title%}
                <title>Logged in as {{ title }}</title>
            {% else %}
                <title> Logged In </title>
            {% endif %}
    
    
    {% endblock%}
    
    
    
    {% block body %}
    
        {% with messages=get_flashed_messages() %}
            {% if messages %}
                {% for message in messages %}
                    <p>{{ message }}</p>
                {% endfor %}
            {% endif %}
        {% endwith %}
    
    
       <h1>Welcom, {{ username }}! </h1>
        
    {% endblock%}

    最后,您將在瀏覽器上獲得輸出。

    這是應用程序快照。

    恭喜

    希望您喜歡并喜歡這篇文章,并希望您發現這些信息有用。 對于喜歡使用 Python 相關框架開發 Web 應用程序的人來說,這是一個適合初學者的教程。

    如果您有任何問題,請給我留言。

    感謝您的閱讀!

網站首頁   |    關于我們   |    公司新聞   |    產品方案   |    用戶案例   |    售后服務   |    合作伙伴   |    人才招聘   |   

友情鏈接: 餐飲加盟

地址:北京市海淀區    電話:010-     郵箱:@126.com

備案號:冀ICP備2024067069號-3 北京科技有限公司版權所有