在后端调用另一个 python 文件
Call another python file in the backend
我已经安装了 "mod_wsgi",我正在后端试验 python。我有 php 背景,所以我正在努力将后端重定向到另一个 python 文件,例如:
这是我的test.py,当我去“http://localhost/”时被调用:
def application(environ, start_response):
start_response("301 Redirect", [("Location", "http://localhost/test.py")])
return [""]
和"test.py":
def application(environ, start_response):
status = "200 OK"
output = test()
response_headers = [('Content-type', 'text/html'), ('Content-Length', str(len(output)))]
start_response(status, response_headers)
return [output]
def test():
return "ok"
我不确定在"test.py"中使用"application"是否正确。
在 php 中,我会将用户重定向到另一个“*.php”文件,进行一些处理,它会正常工作,但在尝试执行上述操作时出现此错误:
The page isn't redirecting properly.
Firefox has detected that the server is redirecting the request for this address in a way that will never complete.
This problem can sometimes be caused by disabling or refusing to accept cookies.
我知道我可以像 Django 这样的框架,但我想自己完成所有这些,这样我可以学到更多。那么,我如何才能像在 PHP 中那样进行这些重定向?什么是正确且最 pythonic 的重定向方式?
谢谢。
与 cgi/php 不同,您的 Web 服务器解析请求并将它们分派到相应的脚本文件,在 wsgi 世界中,您只有一个 python 脚本来获取所有请求并负责解析和调度。因此,当您从 index.py
重定向到 test.py
时,您只需再次调用 index
,其中 env[PATH_INFO]
等于 "test.py".
关于整体结构,尽量不要像您在 php 中习惯的那样,根据单独的脚本来思考。只需构建您的应用程序,必要时将其拆分为函数和模块,然后检查 application()
中的 PATH_INFO
以将请求分派给适当的函数。例如,如果您的应用与用户打交道,您可能想要添加一个 user
模块并像这样调用它:
import user
def application(environ, start_response):
if environ['PATH_INFO'] == '/user/create':
user.create()
if environ['PATH_INFO'] == '/user/delete':
user.delete()
我已经安装了 "mod_wsgi",我正在后端试验 python。我有 php 背景,所以我正在努力将后端重定向到另一个 python 文件,例如:
这是我的test.py,当我去“http://localhost/”时被调用:
def application(environ, start_response):
start_response("301 Redirect", [("Location", "http://localhost/test.py")])
return [""]
和"test.py":
def application(environ, start_response):
status = "200 OK"
output = test()
response_headers = [('Content-type', 'text/html'), ('Content-Length', str(len(output)))]
start_response(status, response_headers)
return [output]
def test():
return "ok"
我不确定在"test.py"中使用"application"是否正确。
在 php 中,我会将用户重定向到另一个“*.php”文件,进行一些处理,它会正常工作,但在尝试执行上述操作时出现此错误:
The page isn't redirecting properly. Firefox has detected that the server is redirecting the request for this address in a way that will never complete. This problem can sometimes be caused by disabling or refusing to accept cookies.
我知道我可以像 Django 这样的框架,但我想自己完成所有这些,这样我可以学到更多。那么,我如何才能像在 PHP 中那样进行这些重定向?什么是正确且最 pythonic 的重定向方式?
谢谢。
与 cgi/php 不同,您的 Web 服务器解析请求并将它们分派到相应的脚本文件,在 wsgi 世界中,您只有一个 python 脚本来获取所有请求并负责解析和调度。因此,当您从 index.py
重定向到 test.py
时,您只需再次调用 index
,其中 env[PATH_INFO]
等于 "test.py".
关于整体结构,尽量不要像您在 php 中习惯的那样,根据单独的脚本来思考。只需构建您的应用程序,必要时将其拆分为函数和模块,然后检查 application()
中的 PATH_INFO
以将请求分派给适当的函数。例如,如果您的应用与用户打交道,您可能想要添加一个 user
模块并像这样调用它:
import user
def application(environ, start_response):
if environ['PATH_INFO'] == '/user/create':
user.create()
if environ['PATH_INFO'] == '/user/delete':
user.delete()