python学习笔记(6)_模板

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

接着就是生成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 %}
时间: 2024-10-10 21:58:17

python学习笔记(6)_模板的相关文章

Python学习笔记五_数据类型(字符串)

已经学习过的数据类型包括:int.float.list.tuple.dict.这篇来单独记录下字符串.单独将字符串这种数据类型写出来,是因为python里有很多非常有用的字符串内置方法. 一.字符串定义 字符串可以存任意类型的字符串,比如名字,一句话等等. 1 name = 'Rebecca' 2 msg = 'Fighting' 二.字符串内置方法 1.常用方法 输出为字符串的方法 a = 'my name is Rebecca' print(a.capitalize()) #将字符串的第一个

Python学习笔记十_模块、第三方模块安装、模块导入

一.模块.包 1.模块 模块实质上就是一个python文件.它是用来组织代码的,意思就是把python代码写到里面,文件名就是模块的名称,test.py test就是模块的名称 2.包 包,package本质就是一个文件夹,和文件夹不一样的是它有一个__init__.py文件.包是从逻辑上来组织模块的,也就是说它是用来存放模块的,如果想到如其他目录下的模块,那么这个目录必须是一个包才可以导入. 二.模块分类 1.标准模块.标准包 python自带的这些模块,直接import就能用的 import

OpenCV之Python学习笔记

OpenCV之Python学习笔记 直都在用Python+OpenCV做一些算法的原型.本来想留下发布一些文章的,可是整理一下就有点无奈了,都是写零散不成系统的小片段.现在看 到一本国外的新书<OpenCV Computer Vision with Python>,于是就看一遍,顺便把自己掌握的东西整合一下,写成学习笔记了.更需要的朋友参考. 阅读须知: 本文不是纯粹的译文,只是比较贴近原文的笔记:         请设法购买到出版社出版的书,支持正版. 从书名就能看出来本书是介绍在Pytho

Python学习笔记--未经排版

Python 学习笔记 Python中如何做到Print() 不换行 答:Print("输出内容",end='不换行的分隔内容'),其中end=后面为2个单引号 注:在Python 2.x中,Print "输出内容", 即在输出内容后加一逗号 Python中 is 和 == 的区别 答:Python中的对象包含三要素:id.type.value 其中id用来唯一标识一个对象,type标识对象的类型,value是对象的值 is判断的是a对象是否就是b对象,是通过id来

python 学习笔记 3 -- 数据结构篇下

5.引用 当你创建一个对象并给它赋一个变量的时候,这个变量仅仅 引用 那个对象,而不是表示这个对象本身!也就是说,变量名指向你计算机中存储那个对象的内存.这被称作名称到对象的绑定.eg. [python] view plaincopy # -*- coding: utf-8 -*- shoplist = ['apple', 'mango', 'carrot', 'banana'] print "we copy the shoplist to mylist directly \"with

python学习笔记[2]-join 和 split

python join 和 split方法的使用,join用来连接字符串,split恰好相反,拆分字符串的. 1.join用法示例 >>>li = ['my','name','is','bob'] >>>' '.join(li) 'my name is bob' >>>'_'.join(li) 'my_name_is_bob' >>> s = ['my','name','is','bob'] >>> ' '.join

01-Python学习笔记-基础语法

Python标识符 -d           在解析时显示调试信息 -O           生成优化代码 ( .pyo 文件 ) -S           启动时不引入查找Python路径的位置 -v            输出Python版本号 -X           从 1.6版本之后基于内建的异常(仅仅用于字符串)已过时. -c cmd     执行 Python 脚本,并将运行结果作为 cmd 字符串. file           在给定的python文件执行python脚本. P

python学习笔记(01):python和c语言 标识符命名规则比较

python标识符命名规则:标识符的第一个字符必须是字母表中的字母(大写或小写)或者一个下划线(‘ _ ’).标识符名称的其他部分可以由字母(大写或小写).下划线(‘ _ ’)或数字(0-9)组成.标识符名称是对大小写敏感的.例如,myname和myName不是一个标识符.注意前者中的小写n和后者中的大写N.有效 标识符名称的例子有i.__my_name.name_23和a1b2_c3.无效 标识符名称的例子有2things.this is spaced out和my-name. c语言标识符命

python学习笔记12-模块使用

python学习笔记12-模块使用 模块os,sys 什么是模块? 模块os,sys 模块是Python组织代码的一种基本方式 一个Python脚本可以单独运行,也可以导入到另外一个脚本运行,用import hello语句来导入,不用加入.py 什么是Python的 包? Python的模块可以按照目录组织为包 创建一个包的步骤: 创建一个名字为包名的目录 在改目录下创建一个__init__.py文件 根据需要,在该目录下存放脚本文件或已编译的扩展及子包 import pack.m1,pack.

python学习笔记2—python文件类型、变量、数值、字符串、元组、列表、字典

python学习笔记2--python文件类型.变量.数值.字符串.元组.列表.字典 一.Python文件类型 1.源代码 python源代码文件以.py为扩展名,由pyton程序解释,不需要编译 [[email protected] day01]# vim 1.py #!/usr/bin/python        print 'hello world!' [[email protected] day01]# python 1.py hello world! 2.字节代码 Python源码文件