flask 简单实践

1、Flask 表单:

为了能够处理 web 表单,我们将使用 Flask-WTF,该扩展封装了 WTForms 并且恰当地集成进 Flask 中。

创建一个配置文件以至于容易被编辑。(文件 config.py):

CSRF_ENABLED = True
SECRET_KEY = ‘shi-yan-lou‘

Flaks-WTF 扩展只需要两个配置。

CSRF_ENABLED 配置是为了激活 跨站点请求伪造 保护。在大多数情况下,你需要激活该配置使得你的应用程序更安全些。

SECRET_KEY 配置仅仅当 CSRF 激活的时候才需要,它是用来建立一个加密的令牌,用于验证一个表单。

app/init.py

app.config.from_object(‘config‘)

1、用户登录表单

在 Flask-WTF 中,表单是表示成对象, Form 类的子类。一个表单子类简单地把表单的域定义成类的变量。 我们将要创建一个登录表单,用于用户认证系统。
在我们应用程序中支持的登录机制是标准的用户名/密码类型 我们同时在表单上提供一个 remember me 的选择框,以至于用户可以选择在他们的网页浏览器上种植 cookie ,当他们再次访问的时候,浏览器能够记住他们的登录。

app/forms.py

from flask_wtf import Form
from wtforms import TextField,BooleanField, PasswordField
from wtforms.validators import Required

class LoginForm(Form):
  name = TextField(‘Name‘, validators=[Required()])
  password = PasswordField(‘password‘, validators=[Required()])
  remember_me = BooleanField(‘Remember_me‘, default=False)

Required 是一个验证器,一个函数,它能够作用于一个域,用于对用户提交的数据进行验证。 Required 验证器只是简单地检查相应域提交的数据是否是空。

Flask-SQLAlchemy 的应用:

Flask-SQLAlchemy 扩展来管理我们应用程序的数据。这个扩展封装了 SQLAlchemy项目,这是一个 对象关系映射器 或者 ORM。

ORMs 允许数据库应用程序与对象一起工作,而不是表以及 SQL。执行在对象的操作会被 ORM 翻译成数据库命令。

1、迁移:使用 SQLAlchemy-migrate 来跟踪数据库的更新

2、配置(文件 config.py):

import os

basedir = os.path.abspath(os.path.dirname(__file__)) 
SQLALCHEMY_DATABASE_URI = ‘sqlite:///‘ + os.path.join(basedir, ‘app.db‘)
SQLALCHEMY_MIGRATE_REPO = os.path.join(basedir, ‘db_repository‘)

SQLALCHEMY_DATABASE_URI 是 Flask-SQLAlchemy 扩展需要的,该变量存储我们数据库文件的路径。

SQLALCHEMY_MIGRATE_REPO 是文件夹,我们将会把 SQLAlchemy-migrate 数据文件存储在这里

当我们初始化应用程序的时候,我们也必须初始化数据库。这是我们更新后的初始化文件(文件 app/init.py)

from flask import Flask
from flask.ext.sqlalchemy import SQLAlchemy 
app = Flask(__name__)
app.config.from_object(‘config‘)
db = SQLAlchemy(app)
from app import views, models

3、数据库模型

id 字段通常会在所有模型中,并且用于作为主键。在数据库的每一个用户会被赋予一个不同的id值,存储在这个字段中。幸好这是自动完成的,我们仅仅需要的是提供 id 这个字段。
nickname 以及 email字段是被定义成字符串,并且指定了最大的长度以便数据库可以优化空间占用。
role 字段是一个整型,我们将使用它来表示哪个用户是管理员,哪个不是。
现在我们已经决定了用户表的样子,剩下的工作就是把它转换成代码(文件 app/models.py)
#-*- coding:utf-8 -*-

from app import db

ROLE_USER = 0
ROLE_ADMIN = 1

class User(db.Model):
"""每一个属性定义一个字段"""
id = db.Column(db.Integer, primary_key = True)
nickname = db.Column(db.String(64), index = True, unique = True)
email = db.Column(db.String(120), index = True, unique = True)
role = db.Column(db.SmallInteger, default = ROLE_USER)

def __repr__(self):
return ‘<User %r>‘ % (self.nickname)
我们刚刚创建的 User 类包含一些字段,这些字段被定义成类的变量。字段是被作为 db.Column类的实例创建的,db.Column 把字段的类型作为参数,并且还有一些其它可选的参数,比如表明字段是否唯一。
repr 方法告诉 Python 如何打印这个类的对象。我们将用它来调试。

 

4、创建数据库

时间: 2024-11-08 21:33:18

flask 简单实践的相关文章

Android 设计随便说说之简单实践(合理组合)

上一篇(Android 设计随便说说之简单实践(模块划分))例举了应用商店设计来说明怎么做模块划分.模块划分主要依赖于第一是业务需求,具体是怎么样的业务.应用商店则包括两个业务,就是向用户展示applist,和下载app.第二是运行环境,在Android平台,有androidsdk提供socket等API支持.因此将模块大体换发了5个模块.(当然了图片加载可以额外提出,用开源组件去做,但是这里为了说明如何设计,暂不提到.还有下载也可以利用开源组件)分别是如下: 模块1 UI模块,负责展示信息和用

SQL知识以及SQL语句简单实践

综述 大家都知道SQL是结构化查询语言,是关系数据库的标准语言,是一个综合的,功能极强的同时又简洁易学的,它集级数据查询(Data Quest),数据操纵(Data Manipulation),数据定义(Data Definition),数据控制(Data Control)于一体 即: SQL语言包含4个部分: ※ 数据定义语言(DDL),例如:CREATE.DROP.ALTER等语句 ※ 数据操作语言(DML),例如:INSERT(插入).UPDATE(修改).DELETE(删除)语句 ※ 数

基于Server-Sent Event的简单聊天室 Web 2.0时代,即时通信已经成为必不可少的网站功能,那实现Web即时通信的机制有哪些呢?在这门项目课中我们将一一介绍。最后我们将会实现一个基于Server-Sent Event和Flask简单的在线聊天室。

基于Server-Sent Event的简单聊天室 Web 2.0时代,即时通信已经成为必不可少的网站功能,那实现Web即时通信的机制有哪些呢?在这门项目课中我们将一一介绍.最后我们将会实现一个基于Server-Sent Event和Flask简单的在线聊天室.

flask 简单通讯录,内网IP管理系统

flask 简单通讯录,内网IP管理系统.学习flask简单写来练习   下载地址:https://git.oschina.net/puzz/web.git

Mysql 备份恢复的简单实践

一.备份: 进行mysql的安装目录: 使用./mysqldump -u root -h 127.0.0.1 -P 3306 -p mysql>trymysql.sql 输入密码,备份成功. 二.恢复 进行mysql. 创建数据库 create database trymysql; 进入数据库 use trymysql ; 恢复 source trymysql.sql Mysql 备份恢复的简单实践

GDB 程序调试简单实践

用了好久的GCC/G++ 却一直都没用过GDB调试过程序,有时程序不是很大,一般有错,直接看编译器编译结果就差不多知道错在哪儿了,或者使用codeblocks单步调试,甚至回到windows下面调试,但是总是不太方便,因此有必要看一下GDB调试方法和基本步骤. 下面是一个简单的演示: 首先创建一个有错误的代码,如下: 这个程序很简单,目的是接受用户的输入,并将用户的输入回应输出来. 但是这个程序的第17行有个错误,使用了未初始化的字符指针name,因此编译运行后会出现段错误,如下: 下面利用GD

Flask ==&gt; 简单用户登录

Flask ==>  简单用户登录 from flask import Flask,render_template,request,redirect,session import functools app=Flask(__name__,template_folder='templates',static_url_path='/xxxxxx') app.secret_key = "sdfasdfasdf3fsdf" #加密钥 def wapper(func): @functool

Flask 简单使用

一.flask介绍 flask是一个轻量级的web框架,可快速的搭建程序.适用于简单的程序. 二.对比Django组件 1 Django:无socket.中间件.路由系统.视图(CBV,FBV). 模板.ORM.cookie.Session.Admin.Form.缓存.信号.序列化.... 2 Flask:无socket.中间件(扩展).路由系统.视图(CBV).第三方模板(jinja2).cookie.Session(很弱) 三.WSGI web服务网关接口协议(WSGI),功能为创建Sock

ZooKeeper分布式锁简单实践

ZooKeeper分布式锁的实现原理 在分布式解决方案中,Zookeeper是一个分布式协调工具.当多个JVM客户端,同时在ZooKeeper上创建相同的一个临时节点,因为临时节点路径是保证唯一,只要谁能够创建节点成功,谁就能够获取到锁.没有创建成功节点,就会进行等待,当释放锁的时候,采用事件通知给客户端重新获取锁资源.如果请求超时直接返回给客户端超时,重新请求即可. 代码实现为了更好的展现效果,我这里设置每个线程请求需要1s,请求超时时间为30s. 首先我们先写一个测试类,模拟多线程多客户端请