0

私のdjangoサイトは、Apacheの設定で次のように提供されています:

WSGIScriptAlias /studio /django/studio/bin/django.wsgi

私の urls.py は次のようになります。

urlpatterns += patterns(
    'django.contrib',
    (r'^admin/', include(admin.site.urls)),
    (r'^accounts/login/$', 'auth.views.login'),
    (r'^accounts/logout/$', 'auth.views.logout'),
    )

...そしてまだ:

[<a href="{% url admin:index %}">admin</a>]

... /studio/admin ではなく /admin へのリンクを生成します。奇妙なことに、管理インターフェース自体の URL は問題ありません。

私は使用しています:

Python 2.5.2-3
Django 1.1.1
mod_wsgi  2.5-1~lenny1
apache2 2.2.9-10+lenny6

誰が私が間違っているのか教えてもらえますか?

乾杯、

クリス

4

2 に答える 2

0

これは Django のバグです。以下を参照してください。

http://code.djangoproject.com/ticket/12464

問題は、仮想ホストの別の場所で行う必要がある書き換えの結果、Apache の書き換えエンジンがオンになっているため、SCRIPT_URL 環境変数が設定されていることです。しかし、Apache を介して /project に要求が行われると、PATH_INFO が空になり、SCRIPT_NAME が空の文字列として誤って設定されます。

このバグが修正されるまで、次の RewriteRule を Apache 構成に挿入すると、PATH_INFO が空にならないようにすることで問題を安全に回避できます。

RewriteEngine On 
RewriteRule ^/project$ /project/ [R]
WSGIScriptAlias /project /django/project/bin/django.wsgi
于 2009-12-29T23:41:58.617 に答える
-1

/studioURL は WSGI で処理されるため、Django インスタンスは URL の一部について何も知りません。テンプレートまたは urls.py のいずれかに手動で追加する必要があります。

settings.py で:

BASE_URL = '/studio'

urls.py で:

r('^%s/admin/' % settings.BASE_URL, include(admin.site.urls)), ...

その後、URL の反転は期待どおりに機能します。管理インターフェイスに入ると、すべてのリンクが相対的になるため、管理リンクが機能します。

于 2009-12-25T10:17:07.630 に答える