flask笔记一

最近学习flask,由于web开发方面接触的并不是很多,所以看官方文档有点焦头烂额,好多的概念不理解。

《Flask web 开发》比较基础,先用这本书做个入门。

1、Flask实例化对象用来接收客户端的所有请求。

from flask import Flask
app = Flask(__name__)

2、路由实现URL和python函数之间的映射,应用python中的修饰器。

@app.route(‘/‘)
def index():
return ‘<h1>Hello World!</h1>

2.1 定义路由中的动态名字,用"<>"。

      @app.route(‘/user/<name>‘)
def user(name):
return ‘<h1>Hello, %s!</h1>‘ % name

    2.2 路由中的动态部分默认为字符串,不过也可以使用其他类型。

int、float、path类型。

  path 类型也是字符串,但不把斜线视作分隔符,而将其当作动态片段的一部分。

3、程序实例用run方法启动 Flask 集成的开发 Web 服务器。

if __name__ == ‘__main__‘:
app.run(debug=True)#debug=true是启动调试模式。

4、模板与渲染模板

模板是一个包含响应文本的文件,其中包含用占位变量表示的动态部分,其具体值只在请
求的上下文中才能知道。使用真实值替换变量,再返回最终得到的响应字符串,这一过程
称为渲染。为了渲染模板,Flask 使用了一个名为 Jinja2 的强大模板引擎。

  4.1 flask在默认情况下,会在该目录下的templates文件夹中找模板,所以出于规范,需要将模板写到该文件夹中。

  4.2 flask通过render_template()方法将Jinja2渲染模板集成到程序中,render_template 函数的第一个参数是

模板的文件名。随后的参数都是键值对,表示模板中变量对应的真实值。

5、Jinja2中涉及到的变量过滤器

  过滤器就是在变量之后,用竖线隔开,给变量添加一些功能。下面是Jinja2中一些常见的过滤器:

      

  6、Jinja2中的控制结构

  条件控制语句

    {%if xxx%}                         {% if user %}

      pass                                   Hello,{{user}}!

    {%else%}       >>>>>        {% else %}

      pass                                    Hello,Stranger!

    {%endif%}                            {% endif %}

  循环语句

    {% for %}                              {% for comment in comments %}

    pass                 >>>>>            {% <li>{{ comment }}</li> %}

    {% endfor %}                         {% endforr %}

Jinja2支持宏,类似与python中的函数

    {% macro render_comment(comment) %}
    <li>{{ comment }}</li>
    {% endmacro %}
    <ul>
      {% for comment in comments %}
      {{ render_comment(comment) }}
      {% endfor %}

    </ul>

    上面的例子就相当于python中定义一个render_comment(comment)函数,只是关键字不同,并且加入一个结束标识。

   其中macro为关键字,当宏结束时用endmacro表示。一般情况下,宏都会重复使用,所以将重复使用的代码写入单独的文件,

   为模板的调用提供方便;另一种重复代码使用的方式是模板继承,关键字extends表示继承,如果衍生模板需要继承基模板中的内容,用

   super()方法获取基模板中的内容。下面是继承的小例子:

   基模板  base.html

    <html>
    <head>
    {% block head %}
    <title>{% block title %}{% endblock %} - My Application</title>
    {% endblock %}
    </head>
    <body>
    {% block body %}
    {% endblock %}
    </body>
    </html>

衍生模板

    {% extends "base.html" %}
    {% block title %}Index{% endblock %}
    {% block head %}
    {{ super() }}
    <style>
    </style>
    {% endblock %}
    {% block body %}
    <h1>Hello, World!</h1>
    {% endblock %}

时间: 2024-10-22 08:01:28

flask笔记一的相关文章

flask笔记二

web表单 web表单是浏览者和网之间的一个互动平台,完成浏览器和服务器之间的数据交互. 1.用Flask-WTF来处理表单 (1)在根目录下编辑扩展配置--config.py CSRF_ENABLED = True SECRET_KEY = 'you-will-never-guess' CSRF_ENABLED配置跨站点保护,就是防止程序挟持用户执行非本意的操作,是一种web的攻击行为,这个设置会提高web的安全性. SECRET_KEY是当CSRE(跨站请求伪造)激活时执行,实现加密用来验证

flask笔记(2)

1.Jinja2模板引擎 1.Flask 在程序文件夹中的 templates 子文件夹中寻找模板 2.模板渲染 1.render_template 函 数的第一个参数是模板的文件名.随后的参数都是键值对,表示模板中变量对应的真实值. @app.route('/user/<name>') def user(name): return render_template('user.html', name=name) 左边的“name”表示参数名,就是模板中使用的占位符:右 边的“name”是当前作

flask笔记1-安装

1.创建应用的根目录: 2.在根目录下创建独立的虚拟python运行环境,创建完成后当前目录会有一个文件夹,即该独立环境(使用--no-site-pachages参数将不会复制任何系统python环境中的第三方包,得到一个纯净的python环境:venv是独立环境的名称,自己命名): virtualenv --no-site-packages venv 3.激活该虚拟环境: source venv/bin/activate 如果需要退出虚拟环境,使用deactivate命令 4.使用pip安装f

flask笔记:5:数据库

linux和mac下需要将项目文件夹赋予权限,不然不能执行 flask中使用Flask-SQLAlchemy扩展来管理程序数据. 修改配置文件 myblog/config.py CSRF_ENABLED=True SECRET_KEY='you-will-never-guess' import os basedir = os.path.abspath(os.path.dirname(__file__)) SQLALCHEMY_DATABASE_URI = 'sqlite:///' + os.pa

flask笔记:6:用户登入登出

用户登入登出需要用到 Flask-Login 插件 初始化 修改配置文件 app/__init__.py from flask import Flask from flask.ext.sqlalchemy import SQLAlchemy import os from flask.ext.login import LoginManager app=Flask(__name__) app.config.from_object('config') db=SQLAlchemy(app) lm = L

flask笔记:4:web表单

处理web表单表单需要Flask-WTF 在根目录创建一个配置文件 myblog/config.py CSRF_ENABLED=True SECRET_KEY='you-will-never-guess' CSRF_ENABLED配置是为了激活跨站点请求伪造保护 SECRET_KEY是当CSRF激活后,建立一个加密令牌,用于验证表单 修改app/__init__.py from flask import Flask app=Flask(__name__) app.config.from_obje

flask笔记:3:模板

目前的目录结构: myblog |----flask |----tmp |----app |----static |----templates |----__init__.py |----views.py |----run.py 编写第一个模板 app/templates/index.html <html> <title>{{title}} - myblog</title> <body> <h1>Hello,{{user.nickname}}&l

flask笔记:7:用户资料信息页和头像

用户信息页 创建一个新的视图函数 app/views.py from app import app,db,lm,models from flask import render_template,flash,redirect,url_for,session,request,g from .forms import LoginForm from .models import User from flask.ext.login import login_user,logout_user,current

flask笔记:8:修复BUG

寻找一下程序中的BUG 首先看一下数据库里拥有两个nickname,john,Susan 登入项目,用john用户进入,然后将john用户名修改成Susan,会发现报错 为什么会报错呢? 报错信息: IntegrityError: (sqlite3.IntegrityError) column nickname is not unique [SQL: u'UPDATE user SET nickname=?, about_me=? WHERE user.id = ?'] [parameters: