最初の章の内容を終えたら、すでにいくつかの簡単なページを作成できます。まず、このメソッドを使用してログイン ページを作成します。ログイン ページの表示結果は次のとおりです:
次に、ログイン後の戻りページがあります:
@app.route("/login",methods=["GET"]) def login(): html="<form method='post'>" \ "<table>" \ "<tr><td>请输入用户名</td><td><input type='text' name='username'/></td></tr>" \ "<tr><td>请输入密码</td><td><input type='password' name='password'/></td></tr>" \ "<tr><td><input type='submit' value='登录'/></td></tr>" \ "</table>" \ "</post>" return html
機能的には、もちろん、次のようになります。実装されていますが、他の側面から見ると、js スクリプトや css スタイルシートを考慮しないとしても、単純なメンテナンスの観点からは悪夢のようなプログラムであるとは言い難いです。 、確認コードボックスを追加する、それが楽しい仕事だとは思わない人もいます。
そのため、まず、ページの HTML 部分を分離する必要があります。これを実現するために、flask は jinja2 テンプレート エンジンを提供します。 jinja2 テンプレート エンジンは、flask の最も基本的な規則にも準拠しています。つまり、多くの設定に基本的なデフォルト値があります。jinja2 と比較して、最も重要なデフォルト値が 1 つあります。それは、テンプレート ファイルが次の場所に配置されることです。このフォルダーはカスタマイズできますが、今のところデフォルト値で十分です。 まず、PyCharm のプロジェクト ルート ディレクトリに templates フォルダーを作成し、そのフォルダー内に login.html ファイルを作成します。もちろん、ディレクトリ構造は次のとおりです。ログインにコードを入力します。 html は次のようになります。
@app.route("/login",methods=["POST"]) def loginPost(): username=request.form.get("username","") password=request.form.get("password","") if username=="test" and password=="123" : return "登录成功" else: return "登录失败"
<!DOCTYPE html> <html> <head> <title>欢迎您登陆--牛博客</title> </head> <body> <form method='post'> <table> <tr><td>请输入用户名</td><td><input type='text' name='username'/></td></tr> <tr><td>请输入密码</td><td><input type='password' name='password'/></td></tr> <tr><td><input type='submit' value='登录'/></td></tr> </table> </form> </body> </html>
基本的な使用法
default.py のコードの一部を次のように変更します:
from flask import render_template #头部,引入模板渲染方法 @app.route("/login",methods=["GET"]) def login(): return render_template("/login.html") #渲染模板,默认找templates文件夹下的login.html文件
from flask import render_template #页头,导入渲染函数 @app.route("/") def index(): return render_template("index.html",site_name='myblog')
<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>{{site_name}}</title> </head> <body> <h1>这个站点的名字为 {{site_name}} </h1> </body> </html>
<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>myblog</title> </head> <body> <h1>这个站点的名字为 myblog </h1> </body> </html>
<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>{{site_name|upper}}</title> </head> <body> <h1>这个站点的名字为 {{site_name}} </h1> </body> </html>
safe はエスケープしません
capitalize は最初の文字を大文字にします lower は小文字に変換しますupper は大文字に変換します
trim末尾のスペースを削除します
striptages HTML タグを削除します
さらに、Jinja2 変数はいくつかの複合型にすることもでき、次のような複合型の一般的なメソッドを使用することもできます。ステートメント
<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>MYBLOG</title> </head> <body> <h1>这个站点的名字为 myblog </h1> </body> </html>
<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>{{site_name[2:]}}</title> </head> <body> <h1>这个站点的名字为 {{site_name}} </h1> </body> </html>
<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>blog</title> </head> <body> <h1>这个站点的名字为 myblog </h1> </body> </html>
Jinja2 は、より強力な機能、つまりテンプレートの継承も提供します。これは個人的には Java の sitemesh に少し似ていると感じます。まず、base.html のベース テンプレートを作成する必要があります:
//选择 {% if name=='test' %} 这是测试 {% else %} {{name}},你好 {% endif %} //循环 <ul> {% for blog in blogs%} {{ blog.title }} {% endfor%} </ul>
この例では、変更可能な部分は、サブテンプレート内で変更できることを意味します。以下はサブテンプレートのコードです:
{% macro render_title(blog)%} <li>{{blog.title}}</li> {% endmacro%}
この時点での実行結果は次のとおりです:
{% import 'macros.html' as macros %} <ul> {% for blog in blogs %} {{ macros.render_title(blog) }} {% endfor %} </ul>
これでテンプレート エンジンができたので、いずれにせよ、ページ レイヤーのためだけにいくつかの優れた関数を作成するのは簡単です。しかし、明らかに、現在のインターフェイスはまだあまり美しくありません。次の章では、現在の主流のフロントエンド フレームワークのブートストラップとフラスコ フレームワークを統合します。
以上がテンプレートエンジンとフォームプラグイン(Python)の詳しい使用例を教えます。の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。