Python Flask Templates, Web Forms, Database学习回顾

Python Flask基础Templates, Web Forms, Database知识学习回顾

最近在跟着狗书的作者Miguel的博客学习Python Flask,再次回顾下前几章有关Templates,Web Forms和Database的内容。主要作为个人复习所用,其他人可能看了会有点疑惑。

Templates

写template文件的话在有PyCharm等高级编辑器会有模板代码自动补全,十分方便。
在PyCharm中需要使用模板代码的提示功能必须要右键点击模板文件夹后选择Mark Directory as template选项。
py文件下应用的模板文件在同一个目录下的templates文件夹(已标记为template文件夹)下,通过

from flask import render_template

导入render_template方法引用该模板文件(前提是已经通过pip或是其他方法安装了Flask如项目环境中)
使用代码示例:

@app.route(‘/’)
def index():
return render_template(‘index.html’)

render_template方法中可通过类似字典的方式传入其他template模板文件(此处为index.html,应在templates文件夹下)所需要的其他参数,例如render_template(‘index.html’, user=a_user)

编写自定义模板文件时,通过Jinja2语法结合html语法编写,可运用
{% if title %}{% endif %}; {% for item in items %}{% endfor %}等语法控制显示逻辑;另外还可以使用{% block content %}{% endblock %}在模板文件中定义不同的块以供 “重写”,重写方法是在字模板文件头部通过 {% extends ‘base.html’ %}语句继承父模板,其中base.html及基模板文件,及所需要继承的模板,之后定义相同{% block content %}html代码内容{% endblock %}但在其中放入不同的内容即可

Web Forms

Python 网页表单制作需要使用flask-wtf包,可通过在terminal输入pip install flask-wtf安装,建议在Python项目根目录下配置虚拟环境后在虚拟环境下安装。

定义表单示例:

> from flask_wtf import FlaskForm
> from wtforms import StringField, PasswordField, BooleanField, SubmitField
> from wtforms.validators import DataRequired
> class LoginForm(FlaskForm):
>   username = StringField('Username', validators=[DataRequired()])
>   password = PasswordField('Password', validators=[DataRequired()])
>   remember_me = BooleanField('Remember Me')
>   submit = SubmitField('Sign In')
> 

每一种表定义成一个class,表的每一列是一个成员变量
LoginForm被导入后可在其他模块下实例化:form = LoginForm(),实例化后传入模板或是其他html文件中可通过以下方法访问其中的列数据

{% extends "base.html" %}

{% block content %}
    <h1>Sign In</h1>
    <form action="" method="post">
        {{ form.hidden_tag() }}
        <p>
            {{ form.username.label }}<br>
            {{ form.username(size=32) }}
        </p>
        <p>
            {{ form.password.label }}<br>
            {{ form.password(size=32) }}
        </p>
        <p>{{ form.remember_me() }} {{ form.remember_me.label }}</p>
        <p>{{ form.submit() }}</p>
    </form>
{% endblock %}
Database

Python中的数据库管理需要用到flask-sqlalchemy插件,它支持多种数据库,同时,为了使数据库之后的修改和更新更可靠,还需要用到flask-migrate插件

定义数据类型User示例:

> from app import db
> class User(db.Model):
>   id = db.Column(db.Integer, primary_key=True)
>   username = db.Column(db.String(64), index=True, unique=True)
>   email = db.Column(db.String(120), index=True, unique=True)
>   password_hash = db.Column(db.String(128))
>   
>   def __repr__(self):
>       return '<User {}>'.format(self.username)    
> 

数据类型定义好后,通过

flask db init

初始化数据库
后通过

flask db migrate -m “desciption: users table”

运用flask-migrate插件迁移(migrate)数据库,方便之后可靠地修改
最后

flask db upgrade

将更改运用到数据库中

数据查询

示例

users = User.query.all()
user = User.query.get(1)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值