[主な内容]
このモジュールの使用方法のフラスコ今日、60分の共通の時間を学ぶために続けます。
(また、仕上げ要約筆記は60分程度かかりました)
詳細は終わりに学習プロセス画面の映像を学習するプロセスを参照してください。
用法フラスコモジュールの予備的な理解、強力なスキルのブロックを構築するウェブサーバプログラム上のPythonでの経験。
次のリソースを介して主学習ネットワーク:
http://docs.jinkan.org/docs/flask/quickstart.html
[研究ノート]
まず、フラスコは、ランタイム・パラメータを指定することができ、サーバーオブジェクトを作成します
__name __ == "__ MAIN__" の場合:
argparse輸入ArgumentParserから
パーサ= ArgumentParser()
parser.add_argument( ' - P'、 '--port'、デフォルト= 80、タイプ= int型、ヘルプ= 'リスニングポート')
引数= parser.parse_args()
ポート= args.port
app.run(ホスト= '127.0.0.1'、ポート=ポート)
のみ使用して、オブジェクトの打ち上げの一部は昨日、
app.run
使用してこのように、デフォルトのポート番号5000、
Webサーバにアクセスするための127.0.0.1:5000
今日では、製品番号80を変更することで、私が直接使用することができます
127.0.0.1
Webサーバにアクセスするには。
第二に、フラスコは、オブジェクトの初期化パラメータが原因バージョン変更に変わり、インスタンス化
私が使用したフラスコのバージョンは1.0.2でした
次のパラメータを注文します:
モジュール名やインスタンス名を頼っIMPORT_NAME例
static_url_path塗りつぶしなしにライン上で、理解していません
ディレクトリ名に保存されている(たとえば、CSSファイル、JSファイルなど)static_folderの静的コンテンツ(Pyのファイルのルートディレクトリにあるディレクトリ)。
static_hostは、ライン上で、なしの塗りを理解していません。
理解していないhost_mathing、デフォルトではライン上のFalseです。
subdomain_matchingは、ライン上で偽の塗りつぶしを理解していませんでした。
template_folderのhtmlページのテンプレートは、ディレクトリに格納されている(ルートディレクトリPYファイル内のディレクトリ。)
INSTANCE_PATH塗りつぶしなしにライン上で、理解していません
instance_relative_config、ライン上で偽の塗りつぶしを理解していません
root_pathは、充填なしにライン上で、理解していません
第三に、テンプレートファイルのHTMLを構築
使用するためには、HTMLテンプレートファイルと[HTML]クライアントが開始し、その後、簡単なHTMLテンプレートを構築し、ディレクトリ階層と同じディレクトリにPYという名前のファイルに保存されている処理をサーバ側でファイルのpythonポストの要求を実現する検証第2のパラメータ設定値を[]に設定されている間template_folder HTMLです。(上記のリンクから、特定のディレクトリエントリ画面を達成するための学習プロセスを参照してください)
次のようにコンテンツのHTMLテンプレートファイルには、次のとおりです。
`` `
<!DOCTYPE HTML>
<HTML>
<ヘッド>
<メタ文字セット= "UTF-8">
<メタ名=「ビューポート」コンテンツ=「幅=装置幅、初期の規模= 1、シュリンク・トゥ・フィット=なし」>
<メタ名=「説明」コンテンツ=「」>
<メタ名=「著者」コンテンツ=「」>
<タイトル>フラスコ最初のページ孤独Heling冷たい</ TITLE>
<スクリプトSRC = "/ jsetc / _ty_ajax_xml.js"> </ SCRIPT>
<スクリプトSRC = "/ jsetc / _ty_function.js"> </ SCRIPT>
<スクリプト言語= "javascriptの" タイプ= "テキスト/ javascriptの">
サーバーポストにリクエストを送信することにより、// AJAX方法
VaRのrequestup。
VAR = falseをisrequest_up_runned。
// POSTリクエストを送信します
関数submitme(){
{試します
VAR STRU = document.forms [0] .t1.value。
VAR STRB = document.forms [0] .t2.value。
//警告(STRU)。
もし(STRB!= "" && STRU!= ""){
isrequest_up_runned =はtrue。
VaRのURL = "/ログイン/";
VAR strcan = "uは=" + STRU。
strcan = strcan + "&P =" + STRB。
requestup = createRequest()。
//警告(strcan)。
// - 要求アップ-----------
ajaxsendtextbypost(requestup、URL、strcan、 "ajax_submitselect_back");
trueを返します。
}
// ----------------------------------
}キャッチ(ERR){
//警告( "提出に失敗しました:" + err.description)。
}
最後に{
}
}
// ----- -----------------------サーバーの待機は、処理結果を返します
関数ajax_submitselect_back(){
{試します
// -----------------------------------------------
// -----------------------------------------------
IF(requestup.readyState == 4){
IF(requestup.status == 200){
VAR応答= requestup;テキストを復元することはできません//、それがデコードする必要があるかもしれません
警告(レスポンス);
//警告(INSTR(応答、 "okghlh"、0));
document.getElementById( "divform")style.display = 'なし';
document.getElementById( "divshow")style.display = "ブロック"。
document.getElementById( "divshow")のinnerHTML =レスポンス[ "TXT"]。
}そうしないと{
// VAR response2 =アンエスケープ(requestup.responseText)。
//警告(response2)。
}
isrequest_up_runned = falseは、
}
}キャッチ(ERR){
//警告( "提出が失敗する可能性があります!" + Err.description)。
isrequest_up_runned = falseは、
}
}
// jQueryを使って起動すると、達成するために使用されるが、理由コードエラーのPyファイル・サーバー側の、私はそうは、次のコードを使用していない、それはここで間違ったJSコードだと思いました。
//次の関数は使用されませんが、何も間違ってはありません
関数submitme2(){
$アヤックス({
URL: '/ログイン/'、
タイプ: 'POST'、
データ:値+ +のdocument.getElementById( "T1")を 'Uは=' "&P =" +のdocument.getElementById( "T2")値。
成功:機能(応答){
document.getElementById( "divform")style.display = 'なし';
document.getElementById( "divshow")style.display = "ブロック"。
document.getElementById( "divshow")のinnerHTML =レスポンス[ "TXT"]。
}、
エラー:関数(誤差){
console.log(エラー)
}
});
}
</ SCRIPT>
</ head>の
<身体>
<DIV ID = "divform">
<フォーム>
<P>
<スパン>ログインユーザ名:</ span>の
<input type = "テキスト" ID = "T1" 名前= "T1">
</ P>
<P>
<スパン>ログインパスワード:</ span>の
<input type = "パスワード" ID = "T2" NAME = "T2">
</ P>
<P>
<INPUT TYPE = "ボタン" ID = "cmdOk" 値= "登录" のonClick = "submitme();">
</ P>
</フォーム>
</ div>
<DIV ID = "divshow" スタイル= "表示:なし;">
</ div>
</ BODY>
</ HTML>
`` `
第四に、コードPYファイルは、仮想パスのURLを構築します
/ログインする/
開始HTML、AJAXのPOSTリクエストによって上記のテンプレートを処理するためのJSコード。
コードは以下の通りであります:
`` `
App.route @(「/ログイン/」、メソッド=「POST」])#methods必要なパラメータのリストではなく、メソッドの引数、複数形であります
デフログイン():
ここで、U =のRequest.Form [「U」]#は、角括弧の使用その読み取り後のクライアント・パラメータを超えるパス、ノートです
P =のRequest.Form [ "P"]
応答= {
'txtが': '現在のユーザー' + U +「ログイン成功!パスワードは次のとおりです。「+ P
}
200#私はあなたが200のIntの値ながら戻りたい理由がわからない、(応答)jsonify戻ります
`` `
第五に、完全なファイル・コードのPy
`` `
フラスコインポートフラスコから
インポート要求
フラスコ輸入フラスコ、jsonify、要求、render_templateから
直接組み込み変数のPyこのドキュメント__name__を使用してアプリ=フラスコ(__名前__、なし、「jsetc」、なし、偽、偽、「HTML」)、ここで#最初の引数は、このドキュメントのPyの使用上のサーバプログラムの名前を示します名前。
App.route(「/」)WEBアプリケーションサーバオブジェクトパスのルートに指定されたディレクトリと実際の表示URL#@
デフインデックス():
リターンrender_template( './ i.html')
App.route @(「/ログイン/」、メソッド=「POST」])#methods必要なパラメータのリストではなく、メソッドの引数、複数形であります
デフログイン():
ここで、U =のRequest.Form [「U」]#は、角括弧の使用その読み取り後のクライアント・パラメータを超えるパス、ノートです
P =のRequest.Form [ "P"]
応答= {
'txtが': '現在のユーザー' + U +「ログイン成功!パスワードは次のとおりです。「+ P
}
200#私はあなたが200のIntの値ながら戻りたい理由がわからない、(応答)jsonify戻ります
@ app.route( "/管理/ <U>")
デフ管理者(U):
戻る「私は管理者のログインページです、現在の管理者のルートディレクトリの下に、管理サブディレクトリは:」+ strの(U)
@ app.route( "/計算/ <int型:A> / <int型:B>")
デフ(a、b)は計算します。
リターンstrが()+ + STR(b)の "乗じた" + + STR(* b)は、 "等しいです"
__name __ == "__ MAIN__" の場合:
argparse輸入ArgumentParserから
パーサ= ArgumentParser()
parser.add_argument( ' - P'、 '--port'、デフォルト= 80、タイプ= int型、ヘルプ= 'リスニングポート')
引数= parser.parse_args()
ポート= args.port
app.run(ホスト= '127.0.0.1'、ポート=ポート)
`` `
[学習]ポストスクリプト
A、フラスコサーバ側、クライアントの要求プロセスをより効率的に
私は、より効率的に達成するために、サーバー側のアーキテクチャのasp.net比較、Pythonの感覚に精通しています、特にフロントとリアの端が完全に分離され、より多くのデータ交換は、AJAXの技術によって達成され、フロントエンドは完全に混乱固執ない、この気持ちの良いポイント。
第二に、技術的な学習早いほど良いです
古い本当に痛い、学ぶために来なさい、すべては自分の気持ち、「若いアイドラー、古い乞食」毎日でした。年には、まだ若い友人がそれを与えた、可能な限り早期に、すべてを這い上がるませんが、将来は非常に明るいとなります!
[スティックの自己記述のルーチン]
最後のルーチンの説明、なぜ私は自習を主張すべきです。
まず、なぜ古い時代はまだ学んでいます
夕食に行くために多くのことをあきらめていない、遊びにHI歌を行く、映画を見に行く、キャッチドラマ......時間、その後、学習年齢に従事し、もはや行われているように思わなければならない、無限の人が周りに戸惑いも軽蔑貧しい魅了......
しかし、私は生涯学習の誓いを放棄したくありません。
なぜなら -
私は私の人生今日現状の状態に同意しません!
ロバート・キヨサキは、あなたが望むものではありません彼らの現在の生活に反映させるために、私たちに語っていないという最高のモチベーションと答え?
自分たちの生活のほとんどを経て、その後、一度だけ見つけるために、今現在進行中の人生はあなたが望むものではない、それは経験の一種でありますか?
誠実な気持ちの唯一の心のこの質問に答える、そして豊かな言語が描かれていないようにするためです。
トレッキングの経験の半分が、それはすべての過去が間違っている是認する勇気を持っているどのように多くの人々、右行かない発見?
そして、私は過去の私に教えて喜ん:「あなたがしている間違っています!。」
だから、半生の間違い、大きなプレッシャーと頭の時代を経験している、希望と半分はラダーフレームの端からありますし、ダウン再び、それで別のはしごを登るために足かせ?
私は希望があることを信じることを好みます!
私は上に行くために生涯学習にすべての理由を接着するために継続したい理由です。
第二には、この年齢ではまだこれらの技術は意味を成しません学習します
純粋な技術は、この時代は、実際には意味はありません。
しかし、関心は意味を越えて行くことができます。
しかし、技術は思考の変化につながることができ、これは意味があります。
自分の心の中で投資、改革のアイデア、これは最も保存、より長期的な投資では、過去に私は最初から、自分の心の中に投資し、その後、あまりにも、前にミスを投資したことがありません。
ロバート・キヨサキは本当に豊かでリッチ時間あることを教えてくれる、本当の自由は、彼らが行うことを喜んでいるかを決定する自由です。
私は私の興味の何かをしても構わないと思ってるので、私はその日の選択の自由を持っていることを望みますので、けれどもその日は、まだそれほど遠くから今日かもしれないが、私は一日以上は離れても、一歩前進を取るという希望から、いくつかの手順をキャッチすることを信じたいです。
さらに、私は、これらの技術に完全に完全にマスターすることができなかったかもしれませんが、技術自体は心の目覚めは、私は私からより積極的に離れて実行することを残すだろうと考えているので、限り、我々はそれを理解し、啓発触発されているが、より速く次のポイントに近づくと、遠すぎること、未知の未来によって放棄されることはありません。
だから、どのように私はペースクエストを追いかけてあきらめることができますか?
私は信じたい:ない遅すぎるかもしれない、遅すぎる感じ。
私が懸念されているために感謝しています、私はあなたを励まします!
私はとんでもない可哀想で育っまで、高齢にこの1に対してどちらかといえば、私たちに知らせてください。
Q私の番号は次のとおりです。578 652 607、あなたのアドバイスをお待ちしております。
[同時音声メモ]
https://www.ximalaya.com/keji/19103006/255132914
[学習]画面記録画面
https://www.bilibili.com/video/av89267641/
リンクします。https://pan.baidu.com/s/1LjfxhLWuoQFYbkQZ7UNicw
抽出コード:vfvi