2011-02-10 40 views
4

当Django应用程序由非根Apache网址下部署(与WsgiScriptAlias/suburl /path_to_django.wsgi)的{%URL%}形式的标签和django.core.urlresolvers.reverse功能考虑SCRIPT_NAME变量和返回的URL /suburl/path_to_my_viewdjango.core.urlresolvers.resolve不正确的行为

然而,当我使用django.core.urlresolvers .resolve函数reso如果这些网址发生错误。这迫使我在调用解决方案之前剥离生成的URL的SCRIPT_NAME。这是预期的行为还是我误解了一切?

问候。

回答

1

我得到了同样的问题:在我的Apache配置

  • wsgi didnt外django.core.urlresolvers.reverse呼叫前面加上前缀或者在任何视图资源
  • ,一个以呼叫定义

    • SCRIPT_NAME前缀相同的方法前缀

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

    # 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中有相同的前缀。这有点多余,但我找到了更清晰的修复程序。