加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Python > 正文

python – django.core.urlresolvers.resolve apache非root部署

发布时间:2020-12-20 13:22:09 所属栏目:Python 来源:网络整理
导读:当 django应用程序部署在非root apache url下(使用WsgiScriptAlias / suburl /path_to_django.wsgi)时,{%url%}标记和django.core.urlresolvers.reverse函数会考虑SCRIPT_NAME变量并返回url表格/ suburl / path_to_my_view 但是,当我使用django.core.urlres
当 django应用程序部署在非root apache url下(使用WsgiScriptAlias / suburl /path_to_django.wsgi)时,{%url%}标记和django.core.urlresolvers.reverse函数会考虑SCRIPT_NAME变量并返回url表格/ suburl / path_to_my_view

但是,当我使用django.core.urlresolvers.resolve函数来解析这些URL时,它会抛出一个错误.这迫使我在调用resolve之前剥离生成的url的SCRIPT_NAME.这是预期的行为还是我误解了一切?

问候.

解决方法

我遇到了同样的问题:

>我的apache配置中定义了SCRIPT_NAME
>在wsgi之外调用django.core.urlresolvers.reverse没有添加前缀
>在任何视图或资源中,对同一方法的调用都会添加前缀

我设法使用下一行代码自动添加前缀:

# in settings.py
from django.core.urlresolvers import set_script_prefix
...
FORCE_SCRIPT_NAME = "your-prefix"
set_script_prefix(FORCE_SCRIPT_NAME)
...

第一行确保您的wsgi每次都使用您的前缀.第二个设置前缀,以便反向找到它.

请注意,您需要在apache conf中使用相同的前缀.它有点多余,但我找到了更清洁的修复.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读