问题标签 [pyramid]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
python - SQLAlchemy - 获取表列表
我在文档中找不到有关此的任何信息,但是如何获取在 SQLAlchemy 中创建的表的列表?
我使用类方法来创建表。
python - 在 Pyramid 中,使用遍历,如何创建动态 url?
我是 Pyramid 的新手,并创建了一个应用程序。我有一个带有类别表的数据库。一个类别可能是具有红色和绿色属性的颜色,另一个类别可能是具有属性 4 和 5 的大小。我希望能够创建类似于:domain.com/{category} 的链接。假设我有两个类别模板。一个是 color.mak,一个是 size.mak。我将如何获得它,以便 domain.com/Red 或 domain.com/Green 将呈现 color.mak 而 domain.com/4 或 domain.com/5 将呈现 size.mak?在阅读了 URL Dispatch 和 Traversal 之间的区别之后,似乎 Traversal 更适合我想要的东西,即使它可以通过任何一种方式完成。我真正坚持的是如何将这些类别添加到我的资源树中。
python - 如何在 Pyramid 应用程序启动期间获取 Registry().settings?
我习惯在 Django 和 gunicorn 上开发 Web 应用程序。
对于 Django,Django 应用程序中的任何应用程序模块都可以通过django.conf.settings获取部署设置。“settings.py”是用 Python 编写的,因此可以动态定义任意设置和预处理。
在gunicorn的情况下,它有三个配置位置,按优先顺序排列,一个设置注册表类实例结合了这些。(但通常这些设置只用于gunicorn而不是应用程序。)
- 命令行参数。
- 配置文件。(如 Django,用 Python 编写,可以动态进行任意设置。)
- 粘贴应用程序设置。
在 Pyramid 的情况下,根据 Pyramid 文档,部署设置通常可以放入pyramid.registry.Registry().settings。但它似乎只有在存在pyramid.router.Router()实例时才能访问。也就是说,在应用程序“main.py”的启动过程中,pyramid.threadlocal.get_current_registry().settings 返回 None。
比如我通常在SQLAlchemy模型模块中定义一些业务逻辑,需要部署设置如下。
myapp/models.py
但是,“settings['external_api_endpoint']”会引发 TypeError 异常,因为“settings”是 None。
我想了两个解决方案。
在“models.py”中定义一个接受“config”参数的可调用对象,“main.py”使用 Configurator() 实例调用它。
/li>myapp/models.py
或者,放置一个空模块“app/settings.py”,稍后将设置放入其中。
/li>myapp/__init__.py
和其他方案都满足要求,但我觉得麻烦。我想要的是以下内容。
开发.ini
定义粗略的设置,因为 development.ini 只能有字符串类型的常量。
/li>我的应用程序/settings.py
基于 development.ini 定义详细设置,因为可以设置任意变量(类型)。
/li>
然后,其他模块可以通过“import myapp.settings”获取任意部署设置。或者,如果 Registry().settings 比 "settings.py" 更可取,则 **settings kwargs 和 "settings.py" 可以在 "main.py" 启动过程中合并并注册到 Registry().settings 中。
无论如何,如何在启动时获取设置字典?或者,Pyramid 温和地迫使我们将需要部署设置的每个代码放在“视图”可调用对象中,这些可调用对象可以随时通过request.registry.settings获取设置字典?
编辑
谢谢,迈克尔和克里斯。
我终于明白为什么 Pyramid 使用线程局部变量(注册表和请求),特别是用于多个 Pyramid 应用程序的注册表对象。
然而,在我看来,部署设置通常会影响可能定义特定应用程序的业务逻辑。这些逻辑通常放在一个或多个 Python 模块中,这些模块可能不是“app/ init .py”或“app/views.py”,它们可以轻松访问 Config() 或 Registry()。这些 Python 模块通常在 Python 进程级别是“全局的”。
也就是说,即使有多个 Pyramid 应用程序共存,尽管它们有自己的线程局部变量,它们也必须共享那些可能在 Python 进程级别包含应用程序特定内容的“全局”Python 模块。
当然,每个这些模块都可以有“initialize()”callalbe,它由应用程序“main”可调用的 Configurator() 调用,或者通过这么长的一系列函数调用传递 Registory() 或 Request() 对象可以满足通常的需求要求。但是,我猜 Pyramid 初学者(如我)或拥有“大型应用程序或这么多设置”的开发人员可能会觉得麻烦,尽管这是 Pyramid 设计。
所以,我认为 Registry().settings 应该只有真正的“线程本地”变量,而不应该有正常的业务逻辑设置。开发人员应负责分离多个特定于应用程序的模块、类、可调用变量等。截至目前,从我的角度来看,我会接受克里斯的回答。或者在“main”可调用文件中,执行“execfile('settings.py', settings, settings)”并将其放在某个“全局”空间中。
python - 如何使用 mongodb 在金字塔中创建单元测试?
我有一个使用 mongodb 进行存储的金字塔项目。现在我正在尝试编写一个测试,但是如何指定与 mongodb 的连接?
更具体地说,我应该连接到哪个数据库(测试?)以及如何使用夹具?在 Django 中,它创建了一个临时数据库,但它在金字塔中如何工作?
python - (Python/Pyramid)拥有标准列表/表单编辑器的更好方法?
我正在处理许多 Pyramid(前 Pylons)项目,并且经常需要显示一些内容的列表(比如用户帐户、日志条目或只是一些其他数据)。用户应该能够对列表进行分页,单击一行并获得一个表单,他/她可以在其中编辑该行的内容。
现在我总是通过使用Webhelpers进行分页的 Mako 模板、用于提供对话框的 Jquery UI 以及我在客户端和服务器上手工制作编辑器表单和 AJAX 请求来重新发明轮子。
如您所知,这会耗费大量时间。所以我想知道的是:有没有更好的方法来提供列表、编辑器对话框和服务器/客户端通信,而不必每次都重新发明轮子?
我听说 Django 通过提供开箱即用的用户帐户和其他东西来减轻负担。但在我的情况下,它不仅仅是关于用户帐户,它可以是存储在 SQL 数据库中服务器端的任何类型的数据,用户应该能够对其进行编辑。
提前致谢!
python - Python 无法正确处理来自 HTML 文本区域的文本输入
我在 HTML 页面上有一个标准表单,具有通常的输入类型:text
, select
, submit
. 使用 Python(Pyramid框架)处理这些表单非常简单且没有问题。
但是,在这种特殊形式中,我需要使用 atextarea
来接受更长的多行输入。在 Python 中处理用户输入时,我使用了以下代码:
这适用于text
输入,但不适用于textarea
输入。 textarea
包含 unicode 字符时不处理输入,并引发以下错误:
这有什么原因吗?看起来它假设textarea
输入被视为 ASCII 而不是 UTF-8,但我不确定如何更改它。
更多信息:提交表单的页面是一个 HTML5 页面,其字符集设置为 UTF-8。
编辑: 弗拉基米尔帕兰特建议它已经被解码,我检查了这个:
print isinstance(request.params['form_element'], str)
返回False
print isinstance(request.params['form_element'], unicode)
返回True
python - 在 Pyramid 中,如何根据上下文内容使用不同的渲染器?
我有 3 种不同的产品页面布局,我想根据有关产品的可用信息显示它们。使用遍历,我有一个名为的类ProductFinder
,它可以获取所有信息。例如,用户转到 domain/green/smallProductFinder
并将列出我的数据库中所有绿色和小型的产品。这个列表是ProductFinder
类中的 self.products。在我的__init__.py
我添加了以下行:
在 products.py 我有:
根据 context.products 中的内容,虽然我想渲染一个不同的 mako。在 Pylons 中,我会做类似的事情:
那么如何根据上下文的内容呈现不同的模板呢?
python - 如何使用 Deform 和 Colander 使文件上传兼任?
我想渲染一个包含一系列文件的表单,代表产品的不同图像。提供文件应该是临时性的,因此即使没有文件,表单也应该验证。我怎样才能做到这一点 ?
这是我使用的滤锅模式:
我试图添加一个“缺失”的论点,例如:
我想我得到一些有用的东西
但我真的不确定这是正确的方法......
谢谢 !
python - Pyramid 中基于动态用户的授权
我正在遵循Pyramid 文档中的安全指南以及 wiki 教程添加授权
现在我需要添加基于单个用户而不是组的限制。
比方说,如果任何博客编辑都有权查看所有评论,那么只有帖子作者可以编辑帖子本身。
对于我的根 ACL 中的第一个任务,如下所示:
但是为什么edit_post
?
我已经阅读了这个答案,但由于我不需要构建资源树,因此对我的需求来说似乎有点过分了。
python - Python pyramid_simpleform 如何处理关系?
在 Pylons 1 中使用过形式化学之后,我正在使用pyramid_simpleform迈出第一步。
我开始使用的表单非常简单:我有一些选项,用户必须检查一个。
这里的表单类:
这是视图中的实例:
比方说model.id_opt == 3
,
在这里,我为模板option
中的每个单选按钮:model
我期望看到的是checked="checked"
这样id_opt == 3
的:
但我没有。
我必须自己设置检查选项吗?