web2py或Django:类似于管理页面的网站代码示例

时间:2013-09-27 10:44:49

标签: django web2py

我们需要选择一个Python Web框架来开发一个站点,该站点允许经过身份验证的用户修改数据库中的表。最有可能的是,我们将选择web2py或Django,具体取决于哪一个提供了更简单的模型路径。

在web2py和Django的介绍性示例中,管理页面与普通网页有明显的区别。在我们的应用程序中,这种区别几乎是不可见的。普通网页应该看起来非常像管理页面,只需少量几个按钮。

是否有可以为我们提供基础的代码示例?

避免误解:我的问题不是web2py还是Django更好。问题是:您可以通过指向一个用法示例来帮助我们 - 无论这两个框架中的哪一个。

1 个答案:

答案 0 :(得分:1)

web2py包含一个“admin”应用程序,它是一个基于Web的IDE,用于创建,编辑和管理应用程序。它是一个独立的应用程序,具有与其他已安装应用程序不同的独特UI。但是,“admin”应用程序用于数据库管理。

对于数据库管理,每个应用程序(基于脚手架应用程序)都包含“appadmin”(这是一个appadmin.py控制器和appadmin.html视图模板)。默认情况下,appadmin.html模板会扩展应用的layout.html模板,因此它会保留与应用其余部分相同的外观。但是,“appadmin”具有很强的功能,因此它仅适用于应该完全控制系统的管理员(它也不是用户友好的界面)。

最近,web2py添加了new functionality,以便为不同用户提供不同级别的权限,从而实现更加用户友好的数据库管理。这是一个例子:

auth.settings.manager_actions = dict(
    all=dict(role='Super', heading='Manage Database', tables=db.tables),
    content=dict(role='Content Manager',
                 tables=[db.articles, db.recipes, db.comments])

以上指定了两个角色,“超级”和“内容管理器”。 “超级”用户可以管理db数据库中的所有表,“Content Manager”用户只能管理“文章”,“食谱”和“评论”表。上面公开了以下两个URL来管理各组数据库表:

URL('appadmin', 'manage', args=['all'])
URL('appadmin', 'manage', args=['content'])

每个页面都包含每个表格的标签,使用SQLFORM.grid来显示和编辑数据。该视图扩展了应用程序的layout.html,因此它看起来就像应用程序的其余部分一样。

当然,如果这对您来说不够灵活,您可以轻松创建使用SQLFORM.gridSQLFORM.smartgrid来管理数据库的自定义页面。另一种选择是使用Crud系统 - 脚手架应用程序包括data()函数,该函数使用Crud启用数据库管理。

如果您需要任何帮助,请询问Google Group