2011-02-10 44 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中有相同的前綴。這有點多餘,但我找到了更清晰的修復程序。