プロジェクトのデモのPythonのフラスコフレームワーク入門します

Pythonの+フラスコフレームワークプログラムのデモは、はじめに

  この例では、青写真フラスコ+ +フラスコログイン+ SQLAlchemyの+ WTForms + PyMySQL関連付けられたスキーマを使用します

フラスコのWebフレームワーク入門

  マイクロWebフレームワークをフラスコ、フレームワーク自体は、両方のライブラリ神社2、弱いマイクロコンピュータ、WERKZEUGベースのコア・コードの関数を意味することは、プラグイン拡張の形態であって、かつ設置が容易とプラグインの使用であり、それ自体がない、非常に希薄です開発拡張

他のWebフレーム、フラスコの要求(リクエスト)、経路(ルート)と同様、応答(レスポンス)は、実質的に完全なHTTPプロセスを構成します。

人気の主な理由をフラスコ:

  1. それは非常に完全な公式文書を持っている、非常に簡単に始めるために
  2. 非常に優れた膨張機構と、サードパーティの環境の拡張がありますが、一般的なソフトウェアでの作業は、自分自身の対応の拡張は、拡張を達成するためにも非常に簡単ですしています
  3. ミニチュアフレームの形で、それは、開発者により多くの選択肢を提供します

はじめの青写真

  モジュラーアプリケーションがフラスコのプロジェクトに青写真(ブループリント)を使用して実装することができ、青写真を維持し、プロジェクトを開発する開発者のためのアプリケーションレベルより明確かつ容易にできます。青写真は、同じ要求URLアドレスのプレフィックスに作用し、同じプレフィックスを持つ要求は、モジュール内に配置されているので、問題を見つける素早く対応するビューを見つけるためのルートを見て、問題を解決します。

  青写真は、テンプレートフィルター、静的ファイル、テンプレート、およびその他の機能を提供します

フラスコの拡張

フラスコ-ログイン库

  、ログイン(ログイン)、ログアウト(ログアウト)し、現在のユーザー(現在のユーザー)として一般的なタスクを、提供するために、ログオンし、ユーザーセッションでフラスコは、ログインしてください

  LOGIN_USER()関数:ユーザーのサインは、一般的なコールサイン表示機能では、実装

  logout_user()関数:ログアウト機能を実現します

  CURRENT_USERプロパティは:現在のユーザーを取得し
  たいページがユーザーのアクセスにはログインしていないためlogin_requiredデコレータ@、許可されたユーザーに表示され、プラス適切なビュー関数の前に宣言するデコレータを@login_required場合、ユーザーのために、デフォルトの処理があります指定されたビューLoginManager.login_viewにリダイレクト

 

フラスコスクリプト库

  個別のスクリプトやシステムを作る、カスタムPythonシェルの開発にサーバーを実行しているなど、フラスコに外部スクリプトの挿入を提供し、コマンドラインタスク外で実行するスクリプトデータベース、cronジョブ、および他のWebアプリケーションを設定します。

  フラスコフラスコスクリプトと同様の作業自体は、単にインスタンスマネージャを呼び出すことにより、コマンドラインからコマンドを定義して追加します。

 

WTFormsフォーム

  WTForms主にユーザ認証データ要求のために使用される、ウェブの複数の成分を形成する支持フレームです。

簡単なコード例:

Myvalidatorsクラス(オブジェクト):
    '' 'カスタム検証ルールを' '' 
    __init __(自己、メッセージを)DEF:
        self.message =メッセージ
    __callの__(自己、フォーム、フィールド)DEF:
        印刷(field.data、「ユーザーによる情報入力")
        field.data == IF"海燕":
            なし戻り
        昇給validators.ValidationError(self.message) 
クラスLoginForm(Form1の)
    '' 'をForm1' '' 
    名前= simple.StringField(
        ラベル="ユーザ名」、
        ウィジェットをwidgets.TextInput =()
        = [バリデータ
            (メッセージ= "ユーザ名は海燕でなければならない")Myvalidatorsを、#は、カスタム規則的であってもよい 
            、validators.DataRequiredを(メッセージ=「ユーザ名が空白にすることはできません」)
            validators.Length(MAX = 8、分= 3、メッセージ= "ユーザ名は、(MAX)D未満%(分)D「)%よりも大きくなければなりません
        、】
        render_kw = { "クラス": "フォームコントロール"}#1 セットのプロパティ

    PWD = simple.PasswordField(
        ラベル= "パスワード"、
        バリ= [ 
            validators.DataRequired(メッセージ= "パスワードが空白でない")、
            validators.Length(最大= 8は、分= 3は、メッセージは= " )パスワード(MAX)Dおよび%未満(分)D%よりも長くなければならない"、
            validators.Regexp(REGEX = "\ D +"、メッセージ= "パスワードは数字でなければなりません") 、
        ]、
        ウィジェット= widgets.PasswordInput()、
        render_kw = { "クラス": "フォームコントロール"} 



@ app.route( '/ログイン'、メソッド= [ "GET"、 "POST"]) 
DEFログイン():
    request.method場合== "GET":
        フォーム= LoginForm()
        render_templateを返します( "login.htmlが"、フォーム=フォーム)
    他:
        フォーム= LoginForm(FORMDATA =のRequest.Form)
        form.validate IF():
            印刷(「検証するために使用されるユーザーが送信したデータ形式、値:%S」%のform.data)
            リターン「ログイン成功」
        他:
            印刷(form.errors、「エラーメッセージ」)
        のリターンrender_template(「login.htmlと」、フォーム=フォーム)

  login.htmlと

<BODY> 
<FORM ACTION = "" METHOD = "POST" NOVALIDATE> 
    <P> {{form.name.label}}、{{form.name}}、{{form.name.errors.0}} </ P> 
    <P> {{form.pwd.label}}、{{form.pwd}}、{{form.pwd.errors.0}} </ P> 
    の<input type = "提出"値= "提交"> 
    <! - -用户名:の<input type = "text"> - > 
    < -密码:!の<input type = "パスワード"> - > 
    <! - <入力タイプ= "提出"値= "提交"> - - > 
</ FORM> 
</ BODY>

  

SQLAlchemyの

  SQLAlchemyのは、複数のデータベースの背景をサポートして非常に強力なリレーショナルデータベースフレームワークです。SQLAlchemyのはまた、ネイティブSQLデータベースの低レベルの機能の使用を提供し、高レベルのORMを提供します。

  ORM:操作はネイティブSQLオブジェクトに変換されます

    利点
    使いやすさは、効果的に複製SQL減らすことができ
    、性能の損失少ない
    柔軟な設計を、複雑なクエリを簡単に達成することができます
    良いの移植性を

 

サンプルコード

flask_sqlalchemyから輸入SQLAlchemyの

デシベル= SQLAlchemyの()


クラスの学生(db.Model):

    S_ID = db.Column(db.Integer、PRIMARY_KEY = Trueの場合、自動インクリメント=真)
    s_name = db.Column(db.String(16)、ユニーク=真)
    s_age = db.Column(db.Integer、デフォルト= 1)

    __tablename__ = "学生"

  

どこで:

S_ID Integer型は、形成外科の分野の創出を表し

PRIMARY_KEYは、主キーかどうかを示します

これは、フィールドが文字列の文字列であることを示しています

唯一のユニークなフィールドことを示しています

デフォルトでは、デフォルト値を示し、

自動インクリメントはインクリメントかどうかを示します

 

最後のコードアドレス

githubのプロジェクトコード住所:  サンプルプロジェクト住所

 

プロジェクト業績のスクリーンショット

 

おすすめ

転載: www.cnblogs.com/owenma/p/11238943.html