我一直在开发一个Django应用程序,但是我最近改变了整体架构计划.我不再需要一个Web框架,只需一个简单的Python脚本,所以我正在从使用Django ORM转向使用SQLAlchemy来创建和管理数据库.
以前我使用Django Admin界面来审查用户发布的内容(添加到数据库中),以便审核它们.
我仍然需要一种通过网站审核用户添加内容的方法.我认为有两种选择:
我开始研究FormAlchemy.如果您有使用FormAlchemy的经验:是否可以使用它创建管理界面,并且是一个特别的框架,更适合用它构建它?
否则,你知道SQLAlchemy管理界面问题有什么好的解决方案吗?
我有一个使用formalchemy管理界面的金字塔项目.我添加了基本的ACL身份验证,即使我通过了身份验证,pyramid_formalchemy插件总是会拒绝.
有关如何仅允许经过身份验证的用户使用pyramid_formalchemy管理界面的任何想法?
授权策略添加如下:
authn_policy = AuthTktAuthenticationPolicy('MYhiddenSECRET', callback=groupfinder) authz_policy = ACLAuthorizationPolicy() config = Configurator( settings=settings, root_factory='package.auth.RootFactory', authentication_policy=authn_policy, authorization_policy=authz_policy ) # pyramid_formalchemy's configuration config.include('pyramid_formalchemy') config.include('fa.jquery') config.formalchemy_admin('admin', package='package', view='fa.jquery.pyramid.ModelView')
我在pyramid_formalchemy中创建自定义表单时遇到问题.我怀疑包中有一个错误,并想确认我没有遗漏任何东西.我的设置如下:
def includeme(config):
config.include('pyramid_formalchemy')
# Adding the jquery libraries
config.include('fa.jquery')
# Adding the package specific routes
config.include('myapp.web.formalchemy.faroutes')
config.formalchemy_admin('admin',
models=[User],
forms=faforms,
session_factory=session,
view='fa.jquery.pyramid.ModelView',
factory='myapp.model.RootFactory')
config.formalchemy_model('user',
model='myapp.model.user.User',
session_factory=session,
view='fa.jquery.pyramid.ModelView',
factory='myapp.model.RootFactory')
Run Code Online (Sandbox Code Playgroud)
faforms是一个包含我的自定义表单的模块:
from myapp.model.user import User
from formalchemy import FieldSet
from formalchemy import Grid
class UserFieldSet(FieldSet):
def __init__(self):
FieldSet.__init__(self, User)
self.configure()
class UserGrid(Grid):
def __init__(self):
Grid.__init__(self, User)
self.configure()
Run Code Online (Sandbox Code Playgroud)
如果我评论上面的两个类,formalchemy工作正常.我可以查看用户,我可以编辑它们.
当我把这两个课程放进去遇到问题时.问题是pyramid_formalchemy从模块的命名空间中获取UserGrid和UserFieldSet,然后尝试使用它们,就好像它们是实例化的类一样.这打破了事情.另一方面,如果pyramid_formalchemy没有找到将动态创建类的类并实例化它们.我相信有问题的代码在pyramid_formalchemy/views.py中,第236行从get_grid()函数开始:
def get_grid(self):
"""return a Grid object"""
request = self.request
model_name = request.model_name
form_name = '%sGrid' % model_name
if hasattr(request.forms, form_name):
g = getattr(request.forms, …
Run Code Online (Sandbox Code Playgroud) 我一直在使用lxml和formalchemy为sqlalchemy构建一个脚手架库,我很难让他们玩得很好.具体来说,formalchemy.FieldSet.render()
返回一个没有root标签的html片段,我似乎无法弄清楚如何让lxml将其解析成可以包含在元素树中的东西:
我得到了什么:
>>> lxml.etree.fromstring(formalchemy.FieldSet(toyschema.User(), session).render())
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "lxml.etree.pyx", line 2743, in lxml.etree.fromstring (src/lxml/lxml.etree.c:52665)
File "parser.pxi", line 1573, in lxml.etree._parseMemoryDocument (src/lxml/lxml.etree.c:79932)
File "parser.pxi", line 1445, in lxml.etree._parseDoc (src/lxml/lxml.etree.c:78709)
File "parser.pxi", line 920, in lxml.etree._BaseParser._parseUnicodeDoc (src/lxml/lxml.etree.c:75083)
File "parser.pxi", line 564, in lxml.etree._ParserContext._handleParseResultDoc (src/lxml/lxml.etree.c:71739)
File "parser.pxi", line 645, in lxml.etree._handleParseResult (src/lxml/lxml.etree.c:72614)
File "parser.pxi", line 585, in lxml.etree._raiseParseError (src/lxml/lxml.etree.c:71955)
lxml.etree.XMLSyntaxError: Extra content at the end of the document, line 8, column 1 …
Run Code Online (Sandbox Code Playgroud)