最新消息: 电脑我帮您提供丰富的电脑知识,编程学习,软件下载,win7系统下载。

flask peewee教程

IT培训 admin 0浏览 0评论

flask peewee教程

入门

本文档的目的是帮助您快速入门和运行。因此,事不宜迟,让我们开始吧。

注意

希望您对flask框架和peewee orm有所了解,但是如果没有,那么这些链接应该可以帮助您入门。

注意

有关完整的示例项目,请查看 flask-peewee附带的示例应用程序。

创建一个Flask应用程序

首先,请确保已安装flask-peewee及其依赖项。您可以通过运行测试套件进行验证:。python setup.py test

确保已安装所有东西后,打开一个名为“ app.py”的新文件,然后输入以下代码:

from flask import Flaskapp = Flask(__name__)
app.config.from_object(__name__)if __name__ == '__main__':app.run()

这不是很令人兴奋,但是我们可以通过运行应用程序来签出我们的项目:

$ python app.py* Running on http://127.0.0.1:5000/* Restarting with reloader

导航到列出的URL将显示一个简单的404页面,因为我们尚未配置任何模板或视图。

创建一个简单的模型

让我们添加一个简单的模型。但是,在执行此操作之前,有必要初始化peewee数据库包装程序并配置数据库:

from flask import Flask# flask-peewee bindings
from flask_peewee.db import Database# configure our database
DATABASE = {'name': 'example.db','engine': 'peewee.SqliteDatabase',
}
DEBUG = True
SECRET_KEY = 'ssshhhh'app = Flask(__name__)
app.config.from_object(__name__)# instantiate the db wrapper
db = Database(app)if __name__ == '__main__':app.run()

这样做是为我们提供了请求处理程序,该处理程序在每个请求上都连接到数据库,并在请求完成后将其关闭。它还提供了一个基本模型类,该类被配置为与配置中指定的数据库一起使用。

现在我们可以创建一个模型:

import datetime
from peewee import *class Note(db.Model):message = TextField()created = DateTimeField(default=datetime.datetime.now)

注意

我们创建的模型Note,子类db.Model,又是其子类,该子类peewee.Model已预先配置为与我们的数据库对话。

设置一个简单的基本模板

我们需要一个简单的模板作为我们应用程序的基础模板,因此请创建一个名为的文件夹templates。在templates文件夹中创建一个文件base.html 并添加以下内容:

<!doctype html>
<html>
<title>Test site</title>
<body><h2>{% block content_title %}{% endblock %}</h2>{% block content %}{% endblock %}
</body>
</html>

将用户添加到网站

在我们可以Note在管理员中编辑这些模型之前,我们需要某种方式来对网站上的用户进行身份验证。这是Auth进入的地方。 Auth提供了User用于登录和注销的模型和视图,并且是所需的Admin

from flask_peewee.auth import Auth# create an Auth object for use with our flask app and database wrapper
auth = Auth(app, db)

让我们还修改运行应用程序的代码,以确保在需要时创建表:

if __name__ == '__main__':auth.User.create_table(fail_silently=True)Note.create_table(fail_silently=True)app.run()

清理导入和声明后,我们将得到以下内容:

import datetime
from flask import Flask
from flask_peewee.auth import Auth
from flask_peewee.db import Database
from peewee import *# configure our database
DATABASE = {'name': 'example.db','engine': 'peewee.SqliteDatabase',
}
DEBUG = True
SECRET_KEY = 'ssshhhh'app = Flask(__name__)
app.config.from_object(__name__)# instantiate the db wrapper
db = Database(app)class Note(db.Model):message = TextField()created = DateTimeField(default=datetime.datetime.now)# create an Auth object for use with our flask app and database wrapper
auth = Auth(app, db)if __name__ == '__main__':auth.User.create_table(fail_silently=True)Note.create_table(fail_silently=True)app.run()

使用管理区域管理内容

现在我们准备添加管理员。在Auth类的初始化之后放置以下代码行:

from flask_peewee.admin import Adminadmin = Admin(app, auth)
admin.register(Note)admin.setup()

现在,我们有一个正常运行的管理站点!当然,我们需要用户登录,因此在应用程序旁边的目录中打开一个交互式python shell并运行以下命令:

from app import auth
auth.User.create_table(fail_silently=True)  # make sure table created.
admin = auth.User(username='admin', email='', admin=True, active=True)
admin.set_password('admin')
admin.save()

现在应该可以:

  1. 导航到http://127.0.0.1:5000/admin/
  2. 输入用户名和密码(“ admin”,“ admin”)
  3. 重定向到管理仪表板
转存失败重新上传取消正在上传…重新上传取消转存失败重新上传取消

仪表板现在很空。继续并添加一些注释(http://127.0.0.1:5000/admin/note/)。如果您现在导航到注释modeladmin,您将看到以下内容:

转存失败重新上传取消正在上传…重新上传取消转存失败重新上传取消

这太糟糕了,所以让我们整理一下以显示消息和消息的发布时间。我们可以通过自定义显示的列来做到这一点。通过以下更改编辑应用程序:

from flask_peewee.admin import Admin, ModelAdminclass NoteAdmin(ModelAdmin):columns = ('message', 'created',)admin = Admin(app, auth)admin.register(Note, NoteAdmin)admin.setup()

现在我们的模型管理员应该看起来像这样:

正在上传…重新上传取消

让我们继续将auth.User模型也添加到管理员中:

admin.register(Note, NoteAdmin)
auth.register_admin(admin)admin.setup()

使用REST API公开内容

添加REST API与添加Admin接口非常相似。我们将创建一个RestAPI对象,然后向其注册我们的项目模型。如果要自定义内容,可以将其子类化RestResource

然后,第一步是创建RestAPI对象:

from flask_peewee.rest import RestAPI# create a RestAPI container
api = RestAPI(app)api.setup()

这还没有做任何事情,我们需要先向其注册模型。让我们Note从前面注册模型:

# create a RestAPI container
api = RestAPI(app)# register the Note model
api.register(Note)api.setup()

假设您的项目仍在运行,请尝试执行以下命令(或仅浏览至列出的网址):

$ curl http://127.0.0.1:5000/api/note/

您应该看到类似以下的内容:

{"meta": {"model": "note","next": "","page": 1,"previous": ""},"objects": [{"message": "blah blah blah this is a note","id": 1,"created": "2011-09-23 09:07:39"},{"message": "this is another note!","id": 2,"created": "2011-09-23 09:07:54"}]
}

假设我们希望注册用户也能够使用该API发布消息。如果您现在尝试进行POST,则会收到以下 401答复:

$ curl -i -d '' http://127.0.0.1:5000/api/note/HTTP/1.0 401 UNAUTHORIZED
WWW-Authenticate: Basic realm="Login Required"
Content-Type: text/html; charset=utf-8
Content-Length: 21
Server: Werkzeug/0.8-dev Python/2.6.6
Date: Fri, 23 Sep 2011 14:45:38 GMTAuthentication failed

这是因为我们尚未Authentication为设置任何方法RestAPI

注意

API的默认身份验证机制仅接受GET请求。为了处理POST / PUT / DELETE,您将需要使用Authentication该类的子 类。

为了允许站点的用户发布注释,我们将使用UserAuthentication 子类,该子类要求使用HTTP Basic auth进行API请求,并且auth凭据与其中一种auth.User模型的凭据匹配。

from flask_peewee.rest import RestAPI, UserAuthentication# instantiate the user auth
user_auth = UserAuthentication(auth)# create a RestAPI container
api = RestAPI(app, default_auth=user_auth)

现在,我们可以使用curl这样的命令行工具发布新笔记:

$ curl -u admin:admin -d data='{"message": "hello api"}' http://127.0.0.1:5000/api/note/{"message": "hello api","id": 3,"created": "2011-09-23 13:14:56"
}

您可以看到它返回了新Note对象的序列化副本。

注意

这只是您可以使用Rest API的一个小示例– 有关更多详细信息,请参阅Rest API文档,包括

  • 限制每个模型的访问
  • 自定义API返回的字段
  • 使用GET参数进行过滤和查询

flask peewee教程

入门

本文档的目的是帮助您快速入门和运行。因此,事不宜迟,让我们开始吧。

注意

希望您对flask框架和peewee orm有所了解,但是如果没有,那么这些链接应该可以帮助您入门。

注意

有关完整的示例项目,请查看 flask-peewee附带的示例应用程序。

创建一个Flask应用程序

首先,请确保已安装flask-peewee及其依赖项。您可以通过运行测试套件进行验证:。python setup.py test

确保已安装所有东西后,打开一个名为“ app.py”的新文件,然后输入以下代码:

from flask import Flaskapp = Flask(__name__)
app.config.from_object(__name__)if __name__ == '__main__':app.run()

这不是很令人兴奋,但是我们可以通过运行应用程序来签出我们的项目:

$ python app.py* Running on http://127.0.0.1:5000/* Restarting with reloader

导航到列出的URL将显示一个简单的404页面,因为我们尚未配置任何模板或视图。

创建一个简单的模型

让我们添加一个简单的模型。但是,在执行此操作之前,有必要初始化peewee数据库包装程序并配置数据库:

from flask import Flask# flask-peewee bindings
from flask_peewee.db import Database# configure our database
DATABASE = {'name': 'example.db','engine': 'peewee.SqliteDatabase',
}
DEBUG = True
SECRET_KEY = 'ssshhhh'app = Flask(__name__)
app.config.from_object(__name__)# instantiate the db wrapper
db = Database(app)if __name__ == '__main__':app.run()

这样做是为我们提供了请求处理程序,该处理程序在每个请求上都连接到数据库,并在请求完成后将其关闭。它还提供了一个基本模型类,该类被配置为与配置中指定的数据库一起使用。

现在我们可以创建一个模型:

import datetime
from peewee import *class Note(db.Model):message = TextField()created = DateTimeField(default=datetime.datetime.now)

注意

我们创建的模型Note,子类db.Model,又是其子类,该子类peewee.Model已预先配置为与我们的数据库对话。

设置一个简单的基本模板

我们需要一个简单的模板作为我们应用程序的基础模板,因此请创建一个名为的文件夹templates。在templates文件夹中创建一个文件base.html 并添加以下内容:

<!doctype html>
<html>
<title>Test site</title>
<body><h2>{% block content_title %}{% endblock %}</h2>{% block content %}{% endblock %}
</body>
</html>

将用户添加到网站

在我们可以Note在管理员中编辑这些模型之前,我们需要某种方式来对网站上的用户进行身份验证。这是Auth进入的地方。 Auth提供了User用于登录和注销的模型和视图,并且是所需的Admin

from flask_peewee.auth import Auth# create an Auth object for use with our flask app and database wrapper
auth = Auth(app, db)

让我们还修改运行应用程序的代码,以确保在需要时创建表:

if __name__ == '__main__':auth.User.create_table(fail_silently=True)Note.create_table(fail_silently=True)app.run()

清理导入和声明后,我们将得到以下内容:

import datetime
from flask import Flask
from flask_peewee.auth import Auth
from flask_peewee.db import Database
from peewee import *# configure our database
DATABASE = {'name': 'example.db','engine': 'peewee.SqliteDatabase',
}
DEBUG = True
SECRET_KEY = 'ssshhhh'app = Flask(__name__)
app.config.from_object(__name__)# instantiate the db wrapper
db = Database(app)class Note(db.Model):message = TextField()created = DateTimeField(default=datetime.datetime.now)# create an Auth object for use with our flask app and database wrapper
auth = Auth(app, db)if __name__ == '__main__':auth.User.create_table(fail_silently=True)Note.create_table(fail_silently=True)app.run()

使用管理区域管理内容

现在我们准备添加管理员。在Auth类的初始化之后放置以下代码行:

from flask_peewee.admin import Adminadmin = Admin(app, auth)
admin.register(Note)admin.setup()

现在,我们有一个正常运行的管理站点!当然,我们需要用户登录,因此在应用程序旁边的目录中打开一个交互式python shell并运行以下命令:

from app import auth
auth.User.create_table(fail_silently=True)  # make sure table created.
admin = auth.User(username='admin', email='', admin=True, active=True)
admin.set_password('admin')
admin.save()

现在应该可以:

  1. 导航到http://127.0.0.1:5000/admin/
  2. 输入用户名和密码(“ admin”,“ admin”)
  3. 重定向到管理仪表板
转存失败重新上传取消正在上传…重新上传取消转存失败重新上传取消

仪表板现在很空。继续并添加一些注释(http://127.0.0.1:5000/admin/note/)。如果您现在导航到注释modeladmin,您将看到以下内容:

转存失败重新上传取消正在上传…重新上传取消转存失败重新上传取消

这太糟糕了,所以让我们整理一下以显示消息和消息的发布时间。我们可以通过自定义显示的列来做到这一点。通过以下更改编辑应用程序:

from flask_peewee.admin import Admin, ModelAdminclass NoteAdmin(ModelAdmin):columns = ('message', 'created',)admin = Admin(app, auth)admin.register(Note, NoteAdmin)admin.setup()

现在我们的模型管理员应该看起来像这样:

正在上传…重新上传取消

让我们继续将auth.User模型也添加到管理员中:

admin.register(Note, NoteAdmin)
auth.register_admin(admin)admin.setup()

使用REST API公开内容

添加REST API与添加Admin接口非常相似。我们将创建一个RestAPI对象,然后向其注册我们的项目模型。如果要自定义内容,可以将其子类化RestResource

然后,第一步是创建RestAPI对象:

from flask_peewee.rest import RestAPI# create a RestAPI container
api = RestAPI(app)api.setup()

这还没有做任何事情,我们需要先向其注册模型。让我们Note从前面注册模型:

# create a RestAPI container
api = RestAPI(app)# register the Note model
api.register(Note)api.setup()

假设您的项目仍在运行,请尝试执行以下命令(或仅浏览至列出的网址):

$ curl http://127.0.0.1:5000/api/note/

您应该看到类似以下的内容:

{"meta": {"model": "note","next": "","page": 1,"previous": ""},"objects": [{"message": "blah blah blah this is a note","id": 1,"created": "2011-09-23 09:07:39"},{"message": "this is another note!","id": 2,"created": "2011-09-23 09:07:54"}]
}

假设我们希望注册用户也能够使用该API发布消息。如果您现在尝试进行POST,则会收到以下 401答复:

$ curl -i -d '' http://127.0.0.1:5000/api/note/HTTP/1.0 401 UNAUTHORIZED
WWW-Authenticate: Basic realm="Login Required"
Content-Type: text/html; charset=utf-8
Content-Length: 21
Server: Werkzeug/0.8-dev Python/2.6.6
Date: Fri, 23 Sep 2011 14:45:38 GMTAuthentication failed

这是因为我们尚未Authentication为设置任何方法RestAPI

注意

API的默认身份验证机制仅接受GET请求。为了处理POST / PUT / DELETE,您将需要使用Authentication该类的子 类。

为了允许站点的用户发布注释,我们将使用UserAuthentication 子类,该子类要求使用HTTP Basic auth进行API请求,并且auth凭据与其中一种auth.User模型的凭据匹配。

from flask_peewee.rest import RestAPI, UserAuthentication# instantiate the user auth
user_auth = UserAuthentication(auth)# create a RestAPI container
api = RestAPI(app, default_auth=user_auth)

现在,我们可以使用curl这样的命令行工具发布新笔记:

$ curl -u admin:admin -d data='{"message": "hello api"}' http://127.0.0.1:5000/api/note/{"message": "hello api","id": 3,"created": "2011-09-23 13:14:56"
}

您可以看到它返回了新Note对象的序列化副本。

注意

这只是您可以使用Rest API的一个小示例– 有关更多详细信息,请参阅Rest API文档,包括

  • 限制每个模型的访问
  • 自定义API返回的字段
  • 使用GET参数进行过滤和查询
11136

与本文相关的文章

发布评论

评论列表 (0)

  1. 暂无评论