码迷,mamicode.com
首页 > 编程语言 > 详细

python学习笔记(6)_模板

时间:2016-02-08 17:19:02      阅读:241      评论:0      收藏:0      [点我收藏+]

标签:

有了框架,基本就好写了。

接着就是生成html如何更简单——使用模板。

这是个HTML文档,里面嵌入变量和命令,替换后得到最终HTML。

技术分享

这就是MVC(model-view-controller)

注意,模板是V,负责显示,而Model是用来传给view的,可以从model中取出要替换的相应数据。如上,model就是一个dict。 而处理URL的函数就是C,负责业务逻辑(检查用户名、取出用于信息等) 

这里我们使用模板是jinja2($ pip install jinja2)

from flask import Flask, request, render_template

app = Flask(__name__)

@app.route(/,methods=[GET,POST])
def home():
    return render_template(home.html)

@app.route(/signin,methods=[GET])
def signin_form():
    return render_template(form.html)

@app.route(/signin,methods=[POST])
def signin():
    username=request.form[username]
    password=request.form[password]
    if username==admin and password==password:
        return render_template(signin_ok.html,username=username)
    return render_template(form.html,message=wrong,username=username)

if __name__==__main__:
    app.run()

 

home.html

<html>
<head>
  <title>Home</title>
</head>
<body>
  <h1 style="font-style:italic">Home</h1>
</body>
</html>

 

form.html

<html>
<head>
  <title>Please Sign In</title>
</head>
<body>
  {% if message %}
  <p style="color:red">{{ message }}</p>
  {% endif %}
  <form action="/signin" method="post">
    <legend>Please sign in:</legend>
    <p><input name="username" placeholder="Username" value="{{ username }}"></p>
    <p><input name="password" placeholder="Password" type="password"></p>
    <p><button type="submit">Sign In</button></p>
  </form>
</body>
</html>

 

signin_ok.html

<html>
<head>
  <title>Welcome, {{ username }}</title>
</head>
<body>
  <p>Welcome, {{ username }}!</p>
</body>
</html>

 

注:html模板要放到templates目录下,templates和app.py同级目录。

 

在jinja2中,用{{name}}表示需要替换的变量,用{% ... %}表示指令来进行循环判断等 

{% for i in page_list %}
    <a href="/page/{{ i }}">{{ i }}</a>
{% endfor %}

 

 

---恢复内容结束---

有了框架,基本就好写了。

接着就是生成html如何更简单——使用模板。

这是个HTML文档,里面嵌入变量和命令,替换后得到最终HTML。

技术分享

这就是MVC(model-view-controller)

注意,模板是V,负责显示,而Model是用来传给view的,可以从model中取出要替换的相应数据。如上,model就是一个dict。 而处理URL的函数就是C,负责业务逻辑(检查用户名、取出用于信息等) 

这里我们使用模板是jinja2($ pip install jinja2)

from flask import Flask, request, render_template

app = Flask(__name__)

@app.route(/,methods=[GET,POST])
def home():
    return render_template(home.html)

@app.route(/signin,methods=[GET])
def signin_form():
    return render_template(form.html)

@app.route(/signin,methods=[POST])
def signin():
    username=request.form[username]
    password=request.form[password]
    if username==admin and password==password:
        return render_template(signin_ok.html,username=username)
    return render_template(form.html,message=wrong,username=username)

if __name__==__main__:
    app.run()

 

home.html

<html>
<head>
  <title>Home</title>
</head>
<body>
  <h1 style="font-style:italic">Home</h1>
</body>
</html>

 

form.html

<html>
<head>
  <title>Please Sign In</title>
</head>
<body>
  {% if message %}
  <p style="color:red">{{ message }}</p>
  {% endif %}
  <form action="/signin" method="post">
    <legend>Please sign in:</legend>
    <p><input name="username" placeholder="Username" value="{{ username }}"></p>
    <p><input name="password" placeholder="Password" type="password"></p>
    <p><button type="submit">Sign In</button></p>
  </form>
</body>
</html>

 

signin_ok.html

<html>
<head>
  <title>Welcome, {{ username }}</title>
</head>
<body>
  <p>Welcome, {{ username }}!</p>
</body>
</html>

 

注:html模板要放到templates目录下,templates和app.py同级目录。

 

在Jinja2模板中,我们用{{ name }}表示一个需要替换的变量。很多时候,还需要循环、条件判断等指令语句,在Jinja2中,用{% ... %}表示指令。

{% for i in page_list %}
    <a href="/page/{{ i }}">{{ i }}</a>
{% endfor %}

 

python学习笔记(6)_模板

标签:

原文地址:http://www.cnblogs.com/IvanSSSS/p/5184976.html

(1)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!