gpt4 book ai didi

python - mod_python 发布者和漂亮的 URL

转载 作者:行者123 更新时间:2023-12-01 06:19:55 24 4
gpt4 key购买 nike

我是 Python 新手(我正在退出 PHP,因为它越来越糟糕),并且我正在努力移植我的旧代码。一件事:

我有一个带有函数index()和bar()的文件/foo.py,因此,通过发布者我可以访问http://domain/foo/barhttp://domain/foo正如文档所示。

我怎样才能拥有它,这样我就可以做到:

http://domain/foo/bar/a1/a2/a3/an/ ...

这样发布者就会启动 bar(),然后我就可以访问 URL 来获取/a1/a2/...我得到的只是 Forbidden :)(我不想对所有内容都使用 mod_rewrite)

哦,我正在使用 2.5.2提前致谢

更新:理想的解决方案是发布者在 URL 中启动最右边的解析,并简单地通过 apache 模块访问 a1/a2/a3..。也许是 apache 指令和发布者的组合?

已解决(大约):神奇的 call() 方法等的答案是多汁的!尽管我想我会修改发布者或编写自己的发布者以使用最右匹配以类似的方式检查对象,然后允许最右使用 apache 模块访问 URL。谢谢大家!

最佳答案

您必须在 foo.py 模块中定义一个对象 bar.a1.a2.a3.an。基本上,发布者处理程序将 URL 中的斜杠替换为点,并尝试查找具有该名称的某个 Python 对象。

您必须在 foo.py 模块中定义一个对象 bar.a1.a2.a3.an。基本上,发布者处理程序将 URL 中的斜杠替换为点,并尝试查找具有该名称的某个 Python 对象。

这里有一些古怪的东西你可以尝试:在 foo.py 中:

class _barclass(object):
def __init__(self, parent, name):
if parent and name:
self.path = parent.path + '/' + name
setattr(parent, name, self)
else:
self.path = ''
def __getattr__(self, name):
return _barclass(self, name)
def __call__(self):
# do your processing here
# url path is contained in self.path

bar = _barclass(None, None)

尽管这有点限制了发布者的意图 - 您最好从头开始编写自己的处理程序。 (或者使用 Django 之类的东西。)

关于python - mod_python 发布者和漂亮的 URL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/841068/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com