python - django.core.urlresolvers.resolve 在 apache 非 root 部署下的不正确行为

标签 python django apache mod-wsgi

当 django 应用程序部署在非根 apache url 下(使用 WsgiScriptAlias/suburl/path_to_django.wsgi)时,{%url%} 标记和 < strong>django.core.urlresolvers.reverse 函数考虑了 SCRIPT_NAME 变量并返回 /suburl/path_to_my_view

形式的 url

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

问候。

最佳答案

我遇到了同样的问题:

  • 在我的 apache 配置中定义的 SCRIPT_NAME
  • wsgi 之外调用 django.core.urlresolvers.reverse 没有添加前缀
  • 在任何 View 或资源中,对相同方法的调用都在前缀前加上

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

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

第一行确保你的 wsgi 每次都使用你的前缀。第二个设置前缀,以便 reverse 找到它。

请注意,您的 apache conf 中需要有相同的前缀。这有点多余,但我发现了更清晰的修复。

关于python - django.core.urlresolvers.resolve 在 apache 非 root 部署下的不正确行为,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4955763/

相关文章:

python - 清理 python 中的嵌套 for 循环

python - 启动 uWSGI 实例失败,代码为 203

mysql - Django 使用 mysql 安装/部署

django - 导入错误 : No module named rest_framework_jwt. 次查看

javascript - Django:在表编辑期间未访问 View

php - 解析 Apache VHosts 以获取域和文件夹路径列表

php - Apache 重写规则强制下载

python - 从字符串的开头删除 n 个字符

python - Eclipse 和 Pydev - 如何编辑语法着色选项

java - Yodlee 示例应用卡在 "Checking Cobrand Login Configurations";无法登录