• 网页的MVC模式简介


    #! /usr/bin/env python3

    # -*- coding:utf-8 -*-

     

    #MVC:Model-View-Controller 模型-视图-控制器 

    #Python处理URL的函数就是C(controller),controller负责业务逻辑,比如检查用户名是否存在,取出用户信息等

    #包含变量的HTML代码就是模板V(view),view负责显示逻辑,展现页面,通过简单地替换一些变量,view最终输出的就是用户看到的HTML。

    #Model 是用来存储传递给VIEW的变量的。通常Model就是一个dict。

     

    #将flask_1.py中的例子改成MVC模式:

     

    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='Bad username or password',username=username)

    if __name__=='__main__':

        app.run()

     

    #Flask 通过render_template()函数来实现模块的渲染。和web框架类似,Python的模板也有很多种,Flask默认支持的模板是jinja2.

     

    #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>

    '''

     

    #登录失败的模板呢?我们在form.html中加了一点判断,把form.html重用为登录失败的模板。

    #最后,一定要把模板放到正确的templates目录下,templates和webMVC.py在同级目录下.

     

    #通过MVC,我们在Python代码中处理M(model)和C(controller),而v(view)是通过模板处理的,这样,我们就成功地把Python代码和HTML代码最大限度地分离了。

     

    #使用模板的另一大好处是,模板改起来很方便,而且,改完保存后,刷新浏览器就能看到最新的效果,这对于调试HTML、CSS和JavaScript的前端工程师来说实在太重要。

     

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

    #比如循环输出页码:

    '''

    {% for i in page_list %}

        <a href="/page/{{i}}</a>

    {% endfor %}

    '''

    #如果page_list是一个list:[1,2,3,4,5],上面的模板将输出5个超链接。

    #除了jinja2,常见的模板还有:

    '''

    Mako:用<%...%>和${xxx}的一个模板

    Cheetah:也是用<%...%>和${xxx}的一个模板

    Django:Django是一站式框架,内置一个用{%...%}和{{xxx}}的模板

    '''

  • 相关阅读:
    POJ C程序设计进阶 编程题#4:Tomorrow never knows?
    POJ C程序设计进阶 编程题#3: 发票统计
    深度学习笔记(10)- 控制中心之电源管理、鼠标和触控板、键盘和语言
    深度学习笔记(09)- 控制中心之时间设置
    深度学习笔记(08)- 控制中心之网络设置
    深度学习笔记(07)- 控制中心之声音设置
    深度学习笔记(06)- 控制中心之个性化设置
    深度学习笔记(05)- 控制中心之显示与默认程序
    深度学习笔记(04)- 控制中心之首页与用户管理
    深度学习笔记(03)- 启动器
  • 原文地址:https://www.cnblogs.com/Ting-light/p/9548194.html
Copyright © 2020-2023  润新知