我想创建一个网站,我很困惑使用哪个Web框架.请推荐我哪个框架更好:Django或Zope.我正在使用Python.
作为定制Plone的典型"集成商"程序员,我应该如何了解ZMI以帮助我更有效地编码?什么是设置,工具,陷阱,快捷方式和黑暗角落,这将节省我的时间,并帮助我编写更好的代码?
编辑:将其视为我在文件系统上编码的读取,使用GenericSetup配置文件进行设置更改.我知道在ZMI中做出改变是一个坏主意,并且通常很明确.但偶尔ZMI肯定是有用的:用于检查工作流,或检查内容项的权限,或通过portal_setup仅安装配置文件的一部分.ZMI真的没什么值得了解的吗?或者那里有其他有用的小花絮吗?
我一直在使用pas.plugins.sqlalchemy为MySQL提供身份验证和成员数据存储的RDBMS后端.身份验证工作完美,成员数据在RDBMS上正确存储和恢复.目前的用户超过20.000
但是,用户枚举需要很长时间.我已经检查了Plone控制面板/用户和组部分中的" 许多用户 ",但即使是简单的用户搜索也需要几乎无限的时间.通过调试plugin.py脚本,我注意到enumerateUsers()被调用的次数与存储的用户数一样多; 因此,完成简单搜索请求需要大量的CPU时间,因为查询与每个用户名匹配,一次一个用户,一次一个查询.
我在这里错过了什么吗?是不是pas.plugins.sqlalchemy有用,特别是当你有一个非常大的用户?目前,我在我的*acl_users/plugins/User Enumeration*设置中将sql插件作为最高优先级.我应该改变吗?
我试图基于HTTP get变量中包含的变量动态更新表单字段.特别是www.site.com/form?id=name.我想从url中提取'id'字段并自动填充表单的memberID字段.
我可以使用self.request.get('id')访问get变量.但是我无法弄清楚如何更新表单字段.我检查了小部件文档http://packages.python.org/z3c.form/widget.html,但没有一个建议有效.
class IUpdateEmailFormSchema(interface.Interface):
# -*- extra stuff goes here -*-
"""
"""
memberID = schema.TextLine(title=(u'Member id'))
email = schema.TextLine(title=(u'Email'), description=(u'The email'))
class updateEmailForm(form.Form):
fields = field.Fields(IUpdateEmailFormSchema)
label = _(u'Change Email')
ignoreContext = True
@button.buttonAndHandler(u'Update')
def handleUpdate(self,action):
data, errors = self.extractData()
if data.has_key('email'):
portal_membership = getToolByName(self.context, 'portal_membership')
member = portal_membership.getMemberById(data['memberID'])
def updateWidgets(self):
print "This is update widget \n\n"
import pdb; pdb.set_trace()
print self.request.form['id'] #Does not work as specified in http://packages.python.org/z3c.form/widget.html
#self.widgets["memberID"].value = self.request.get('id').encode('utf-8')
form.Form.updateWidgets(self)
updateEmailFormView = wrap_form(updateEmailForm) …Run Code Online (Sandbox Code Playgroud) 请有人向我解释为什么在Plone 4.1rc3上,在goodpy上为Plone 4.1 final挑选的版本要少得多.有了Plone 4.1 final,有很多未经批准的版本.大多数似乎是zope.*包.
比较
http://good-py.appspot.com/release/plone/4.1rc3 和 http://good-py.appspot.com/release/plone/4.1
我使用buildout.dumppickedversions列出未经修改的版本并强制选择所有版本.
Plone产品安装的日志轮换将是一个很好的功能.有关将日志轮换集成到Plone中的最新实践是什么?
我发现这篇文章:http://encolpe.wordpress.com/2010/06/17/how-to-get-log-files-rotate-in-zope-with-buildout/但也有对Plone的任何文档. org我想ping社区以获得众所周知的最佳做法,不要填满他们的硬盘.
我想对缺少索引键值的对象的zope目录执行搜索.可能吗?
例如,考虑后续代码行:
from Products.CMFCore.utils import getToolByName
catalog = getToolByName(context, 'portal_catalog')
results = catalog.searchResults({'portal_type': 'Event', 'review_state': 'pending'})
Run Code Online (Sandbox Code Playgroud)
如果我对没有插入某个项目而不是portal_type或review_state的对象感兴趣,该怎么办?
在Plone初创公司,我收到了定制产品的警告
/Users/mikko/code/buildout-cache/eggs/zope.configuration-3.7.4-py2.7.egg/zope/configuration/fields.py:416:
UserWarning: You did not specify an i18n translation domain for the 'title' field in /Users/mikko/code/xxx-dev/src/xxx-eggs/Products.xxxExternal/Products/xxxExternal/configure.zcml
Run Code Online (Sandbox Code Playgroud)
然而,在configure.zcml有i18:domain设置.我还直接用一些额外的属性设置它,以确保:
<configure xmlns="http://namespaces.zope.org/zope"
xmlns:five="http://namespaces.zope.org/five"
xmlns:genericsetup="http://namespaces.zope.org/genericsetup"
xmlns:browser="http://namespaces.zope.org/browser"
xmlns:i18n="http://namespaces.zope.org/i18n"
i18n:domain="xxxPatient"
>
<include package=".browser" />
<include package="plone.app.z3cform" />
<!-- Register the installation GenericSetup extension profile -->
<genericsetup:registerProfile
name="default"
title="xxxExternal"
directory="profiles/default"
provides="Products.GenericSetup.interfaces.EXTENSION"
i18n:attributes="title; description"
i18n:domain="xxxPatient"
/>
</configure>
Run Code Online (Sandbox Code Playgroud)
这是给出警告的相关代码:
def fromUnicode(self, u):
context = self.context
domain = getattr(context, 'i18n_domain', '')
if not domain:
domain = 'untranslated'
import pdb ; pdb.set_trace()
warnings.warn(
"You did not …Run Code Online (Sandbox Code Playgroud) Python和Scrapy的新手.我显然需要这些模块来正确运行scrapy.我按照建议下载了Zope接口,并且已按照Scrapy上的说明尝试使用easy_install进行安装.我正在运行Windows 7 64并首先下载64位版本的Pyton 2.7和所有模块,包括Zope.这不起作用,所以我取消了所有内容并下载了32位版本,但我遇到了同样的问题.很明显,我正在做一些非常基本的错误.希望得到帮助.
这就是:
C:> easy_install zope.interface-4.0.3-py2.7-win32.egg
我得到了一大堆结果(即使我正确地将其格式化为代码,stackoverflow也不允许我复制/粘贴),最后说:
No local packages or download links found for zope.interface-4.0.3-py2.7-win32.egg
Run Code Online (Sandbox Code Playgroud)
我知道我需要zope,因为当我尝试运行srapy时,我收到以下错误(还有其他结果):
C:> scrapy shell http://www.yahoo.com
raise ImportError(required + ": no module named zope.interface.")
ImportError: Twisted requires zope.interface 3.6.0 or later: no module named zope.interface.
正如我所说的那样,我是一个真正的新人,并且需要一段时间来完成所需的所有模块和软件包.
虽然您可以使用以下划线开头的id来生成代码内容,但是" _foo"似乎您无法遍历具有此特殊ID的项目.每次尝试使用浏览器访问以此方式命名的内容都会导致NotFound错误.这两种方法都不喜欢__bobotraverse__或被__getitem__调用,比如很早就检查了这个限制.
此限制如何工作以及如何更改?我可以访问ID中带有前缀下划线的子对象吗?