思想论坛

cullerton.agora的Python项目详细描述


agora是一个思想论坛。它是一个简单的、类似博客的应用程序,支持多个作者。

它是为班级课程开发的,并不是为了真正的部署,尽管它可能有一些用途。

有两类:作者和创意。一个论坛可以有零个或多个作者。每个作者可以有零个或更多的想法。

agora使用sqlalchemy作为持久层。您需要一个有效的sqlalchemy会话来初始化agora。

用法

设置sqlalchemy会话

>>> from agora.models import Base

>>> from sqlalchemy import create_engine
>>> from sqlalchemy.orm import scoped_session, sessionmaker

>>> engine = create_engine('sqlite:///:memory:')
>>> Base.metadata.create_all(engine)

>>> DBSession = scoped_session(sessionmaker())
>>> DBSession.configure(bind=engine)

论坛基础

>>> from agora import Forum
>>> forum = Forum(DBSession)

一个新的论坛没有作者和想法。

>>> forum.get_authors()
[]
>>> forum.get_ideas()
[]

要添加一个想法,首先需要一个作者。

若要添加新作者,请将用户名、全名和电子邮件传递到add\u author方法。

>>> forum.add_author(username='schmoe', fullname='Joe Schmoe', email='schmoe@example.com')
1
>>> forum.add_author(username='misinformation', fullname='Miss Information', email='misinformation@example.com')
2

注意,该方法返回作者的id。

我们现在有了作者。

>>> forum.get_authors()
[Joe Schmoe, March 02, 2016, Miss Information, March 02, 2016]

您可以通过ID访问作者。

>>> forum.get_author(1)
Joe Schmoe, March 02, 2016

若要添加新创意,请将标题、创意和作者ID传递到add\u idea方法。

>>> forum.add_idea(title='First Idea!', idea='This is my idea.', author_id=1)
1

>>> forum.add_idea(title='My First Idea!', idea='This is my idea.', author_id=2)
2

>>> forum.add_idea(title='Another Idea!', idea='This is my idea.', author_id=1)
3

>>> forum.add_idea(title='Another Idea!', idea='This is my idea.', author_id=2)
4

我们现在有主意了。

>>> forum.get_ideas()
[First Idea!, Joe Schmoe, March 02, 2016, My First Idea!, Miss Information, March 02, 2016, Another Idea!, Joe Schmoe, March 02, 2016, Another Idea!, Miss Information, March 02, 2016]

您可以通过ID访问想法。

>>> forum.get_idea(1)
First Idea!, Joe Schmoe, March 02, 2016

你也可以通过过滤器访问想法。

>>> forum.get_ideas(filters={'author': forum.get_author(1)})
[First Idea!, Joe Schmoe, March 02, 2016, Another Idea!, Joe Schmoe, March 02, 2016]

>>> forum.get_ideas(filters={'title': 'First Idea!'})
[First Idea!, Joe Schmoe, March 02, 2016]

>>> forum.get_ideas(filters={'title': 'Another Idea!'})
[Another Idea!, Joe Schmoe, March 02, 2016, Another Idea!, Miss Information, March 02, 2016]

>>> forum.get_ideas(filters={'author': forum.get_author(2), 'title': 'Another Idea!'})
[Another Idea!, Miss Information, March 02, 2016]

您可以按ID删除创意。

>>> forum.delete_idea(1)
1

>>> forum.get_ideas()
[My First Idea!, Miss Information, March 02, 2016, Another Idea!, Joe Schmoe, March 02, 2016, Another Idea!, Miss Information, March 02, 2016]

初始化数据库

提供了用于初始化数据库的脚本。它安装在virtualenv的bin目录中。必须向其传递有效的sqlalchemy数据库uri。

$ initialize_agora_db <database_uri>

$ initialize_agora_db sqlite:///agora.sqlite

如果将单词seed附加到命令中,还可以使用脚本为数据库添加一个示例作者和两个想法。

$ initialize_agora_db sqlite:///agora.sqlite seed

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
java使用Jackson生成所需的JSON响应   使用XMLStreamWriter将java附加到XML   java找不到适用于addAll的方法(List<Integer>)   java如何保存以前在GridLayout上单击过的组件的位置   如何从其他类修改arraylist?JAVA   java Spring引导和GCP连接云SQL实例和springcloudgcpstartersqlpostgresql尝试SSL,但延迟启动   javascript为什么Java无限循环是可能的?对此有什么建议   java如何更改书写器的颜色。普林顿   LinkedBlockingQueue的java内部工作   Java方法从未到达(?)大体上   java Android地图视图未加载内容   正则表达式Java条件   java如何在Javadoc中格式化包含@和{符号的代码段?   excel用Java从Office和PDF文件中提取文本   java音乐无法在可执行文件中播放。Jar文件   java为什么视图没有更新?   googleoauthjavaclient因twitch而失败   java加载纹理LWJGL