1

デプロイしようとしているDjangoアプリがあります。Apache設定は、次のURLを使用してwsgiアプリにアクセスする方法で構成されます。

sitename.com/~amartino

つまり、public_htmlディレクトリにwsgi.pyファイルしかありません。次のURLからDjangoサイトにアクセスします。

sitename.com/~amartino/expofit

それがurls.pyで設定されている方法です。

urlpatterns = patterns('',
('/param_select/$',session_check(param_select)),
('registration/$',registration),
('result_show/(\d+)',session_check(result_show)),
('^expofit/$',media_clean(start)),
('result_pick/$',session_check(result_pick)),
('mail_report/$',session_check(mail_report)),
('notification/$',session_check(notification)),

ただし、私が得ている問題(開発では表示されませんでした:))は、views.pyでハードコードされたHttpResponseRedirectを使用していることです。

...
#If all fields are valid
return HttpResponseRedirect('/expofit/param_select/')
#else reload page
...

本番環境ではサイトがURLのルートに配置されないため、上部が次のHttpResponseRedirectように変換されるため、エラーが発生します。

sitename.com/expofit/param_select/

これはApacheによって認識されません。

スラッシュを削除して、次のようにすることができると思います。

return HttpResponseRedirect('expofit/param_select/')

その結果、次のようになります。

sitename.com/~amartino/expofit/registration/expofit/param_select/

しかし、それは正しい方法ではないようです。すぐに巨大なURLになってしまうからです。ここの設計/構成の欠陥はどこにありますか?

4

1 に答える 1

4

「ハードコードされたHttpResponseRedirectを使用しているという問題が発生しています」

ええと、それではしないでください。そのため、Djangoは、reverseURL名を取得して、適切な絶対URLを計算する関数を提供します。

于 2013-03-11T16:52:10.293 に答える