Pythonの+フラスコフレームワークプログラムのデモは、はじめに
この例では、青写真フラスコ+ +フラスコログイン+ SQLAlchemyの+ WTForms + PyMySQL関連付けられたスキーマを使用します
フラスコのWebフレームワーク入門
マイクロWebフレームワークをフラスコ、フレームワーク自体は、両方のライブラリ神社2、弱いマイクロコンピュータ、WERKZEUGベースのコア・コードの関数を意味することは、プラグイン拡張の形態であって、かつ設置が容易とプラグインの使用であり、それ自体がない、非常に希薄です開発拡張
他のWebフレーム、フラスコの要求(リクエスト)、経路(ルート)と同様、応答(レスポンス)は、実質的に完全なHTTPプロセスを構成します。
人気の主な理由をフラスコ:
- それは非常に完全な公式文書を持っている、非常に簡単に始めるために
- 非常に優れた膨張機構と、サードパーティの環境の拡張がありますが、一般的なソフトウェアでの作業は、自分自身の対応の拡張は、拡張を達成するためにも非常に簡単ですしています
- ミニチュアフレームの形で、それは、開発者により多くの選択肢を提供します
はじめの青写真
モジュラーアプリケーションがフラスコのプロジェクトに青写真(ブループリント)を使用して実装することができ、青写真を維持し、プロジェクトを開発する開発者のためのアプリケーションレベルより明確かつ容易にできます。青写真は、同じ要求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のプロジェクトコード住所: サンプルプロジェクト住所
プロジェクト業績のスクリーンショット