当django应用程序部署在非root apache url( WsgiScriptAlias / suburl /path_to_django.wsgi )下 {%url%} 标记和< strong> django.core.urlresolvers.reverse 函数会考虑 SCRIPT_NAME 变量并返回 / suburl / path_to_my_view
形式的网址但是,当我使用 django.core.urlresolvers.resolve 函数来解析这些网址时,会抛出错误。这迫使我在调用resolve之前删除生成的url的 SCRIPT_NAME 。这是预期的行为,还是我误解了一切?
问候。
答案 0 :(得分:1)
我遇到了同样的问题:
django.core.urlresolvers.reverse
之外的wsgi
的调用没有添加前缀我设法使用下一行代码自动添加前缀:
# 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中使用相同的前缀。这有点多余,但我发现了更清洁的修复。