从WSGI或sh调用Django reverse时返回不同的值

2024-04-20 05:49:54 发布

您现在位置:Python中文网/ 问答频道 /正文

我已经使用mod wsgi在Apache服务器上部署了一个Django项目,使用前缀URL/mysite,即我的Apache配置包含

WSGIScriptAlias /mysite /var/www/mysite/mysite/wsgi.py

当从web服务器进程调用reverse('myview')(from django.core.urlresolvers)时,它返回预期的URL /mysite/myview,即包括前缀URL。在

但是,当从脚本(例如cronjob)调用reverse('myview')时,不通过web服务器进程,只返回{},而不带所需的前缀URL。我的示例脚本如下所示:

^{pr2}$

当在web服务器上下文之外运行时,有没有一种方法可以包含前缀URL,以便相同的reverse('myview')代码可以从两个上下文中运行并返回相同的值?在


Tags: 项目django服务器脚本webmodurlwsgi
1条回答
网友
1楼 · 发布于 2024-04-20 05:49:54

Django在web请求的上下文中只需要一个SCRIPT_NAME。它从WSGI环境或FORCE_SCRIPT_NAME设置中检索,并为请求的持续时间设置。在

要手动设置脚本名称,请使用set_script_prefix()

from django.core.urlresolvers import set_script_prefix

set_script_prefix('/mysite')

请注意,这是1)一个私有的、未记录的函数,2)存储在线程局部变量中。在

相关问题 更多 >