在我的 Pylons 项目中,我最终经常创建和删除控制器(可能比我应该更频繁)。我厌倦了在每个控制器的顶部添加自己的导入和调整。最近有一个关于修改新控制器模板的问题让我部分地不必这样做 - 但我不明白 paster 如何使用 controller.py_tmpl 文件,以及如何告诉 Paster一个现有的项目,“嘿,改用这个模板!”
我需要什么调用来告诉 Paster 使用我的模板而不是默认模板?
在我的 Pylons 项目中,我最终经常创建和删除控制器(可能比我应该更频繁)。我厌倦了在每个控制器的顶部添加自己的导入和调整。最近有一个关于修改新控制器模板的问题让我部分地不必这样做 - 但我不明白 paster 如何使用 controller.py_tmpl 文件,以及如何告诉 Paster一个现有的项目,“嘿,改用这个模板!”
我需要什么调用来告诉 Paster 使用我的模板而不是默认模板?
Pylons 通过添加命令粘贴来创建新的控制器和项目。这些命令在 setup.py 中定义,您可以添加新命令。
例如(取自粘贴文档)假设您有一个名为 Foo 的项目,该项目位于一个也称为 foo 的包中。
在 setup.py 中添加 'foo' 到 'paster_plugins' 列表然后添加一个新命令到 entry_points。
即 entry_points=""" [paste.paster_command] mycommand = foo.commands.test_command:Test """
在 'foo' 下创建一个名为 'commands' 的目录,添加一个 __init.py__ 文件并创建一个名为 test_command.py 的文件
在文件中添加
from paste.script import command
class TestCommand(command.Command):
max_args = 1
min_args = 1
usage = "NAME"
summary = "Say hello!"
group_name = "My Package Name"
parser = command.Command.standard_parser(verbose=True)
parser.add_option('--goodbye',
action='store_true',
dest='goodbye',
help="Say 'Goodbye' instead")
def command(self):
name = self.args[0]
if self.verbose:
print "Got name: %r" % name
if self.options.goodbye:
print "Goodbye", name
else:
print "Hello", name
运行“python setup.py develop”后,您现在可以运行“paste mycommand bob”,您应该得到“Hello bob”输出。
要查看 Pylons 如何添加到此以创建新文件等,请查看 pylons/commands.py 他们有用于创建新控制器和 RestControllers 的命令,您可以复制它们。