1

こんにちは、みんな。ルートのサブディレクトリで django プロジェクトを構成しようとしましたが、うまくいきませんでした (ローカルでは完璧に動作します)。私はdjango公式のdjangoドキュメンタリオンに従って、mod_pythonでプロジェクトをデプロイしました。本当の問題は、管理者またはアプリのビューにアクセスしようとするたびに、「ページが見つかりません」というエラーが表示されることです。

これは、Fedora 7 の /etc/httpd/conf.d/ にある私の python.conf ファイルです。

LoadModule python_module modules/mod_python.so

SetHandler python-program
PythonHandler django.core.handlers.modpython
SetEnv DJANGO_SETTINGS_MODULE mysite.settings
PythonOption django.root /mysite
PythonDebug On
PythonPath "['/var/www/vhosts/mysite.com/httpdocs','/var/www/vhosts/mysite.com/httpdocs/mysite'] + sys.path"

/var/www/ が私の Django プロジェクトを置くのに最適な場所ではないことはわかっていますが、進行中の作業のデモを顧客に送りたいだけなので、後で場所を変更します。

例えば。www.domain.com/mysite/ にアクセスすると、mysite.urls で構成したインデックス ビューが表示されます。しかし、app.url (www.domain.com/mysite/app/) と admin.url (www.domain.com/mysite/admin/) のいずれにもアクセスできません。

ここに mysite.urls があります:

urlpatterns = パターン('',

url(r'^admin/password_reset/$', 'django.contrib.auth.views.password_reset', name='password_reset'),
(r'^password_reset/done/$', 'django.contrib.auth.views.password_reset_done'),
(r'^reset/(?P<uidb36>[0-9A-Za-z]+)-(?P<token>.+)/$', 'django.contrib.auth.views.password_reset_confirm'),
(r'^reset/done/$', 'django.contrib.auth.views.password_reset_complete'),
(r'^$', 'app.views.index'),
(r'^admin/', include(admin.site.urls)),
(r'^app/', include('mysite.app.urls')),
(r'^photologue/', include('photologue.urls')),

)

admin.site.urls を ''django.contrib.admin.urls' に変更してみましたが、うまくいきませんでした。私はこの問題を解決するために多くのことをグーグル検索し、他の開発者がどのように django プロジェクトを構成しているかを読みましたが、サブディレクトリに django をデプロイするための情報があまり見つかりませんでした。INSTALLED_APPS で管理者を有効にしましたが、settings.py は問題ありません。

ガイドがあれば、または私が間違っていることを教えていただければ幸いです。

ありがとう。

4

2 に答える 2

0

mod_wsgiを使っているので、全部同じかどうかはわかりません。しかし、私の urls.py には、次のものがあります。

(r'^admin/(.*)', admin.site.root),

私のApache設定では、これがあります:

Alias /admin/media/ /usr/lib/python2.5/site-packages/django/contrib/admin/media

パスは異なる場合があります。

于 2009-08-26T23:53:27.793 に答える
0

あなたの settings.py が正しく、正しい INSTALLED_APPS があり、それが開発サーバーで動作する場合、それはあなたの Apache 構成ファイルだと思います。

私の python アプリを実行して、mod_python + Django 用の Apache 構成ファイルを作成してみてください。ソースはgithub.com にあります作業用の構成ファイルを取得したら、それを変更できます。

次のように実行します。

C:\Users\hughdbrown\Documents\django\Apache-conf>python http_conf_gen.py --flavor=mod_python --source_dir=. --server_name=foo.com --project_name=foo
Writing 'foo.vhost.python.conf'

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

# apache_template.txt
NameVirtualHost *:80

<VirtualHost *:80>
    ServerAdmin webmaster@foo.com
    ServerName foo.com

    DocumentRoot "./foo/"

    <Location "/">
        # without this, you'll get 403 permission errors
        # Apache - "Client denied by server configuration" 
        allow from all

        SetHandler python-program
        PythonHandler django.core.handlers.modpython
        PythonOption django.root /foo

        PythonDebug On
        PythonPath "[os.path.normpath(s) for s in (r'.', r'C:\Python26\lib\site-packages\django') ] + sys.path"
        SetEnv DJANGO_SETTINGS_MODULE foo.settings
        PythonAutoReload Off
    </Location>

    <Location "/media" >
        SetHandler None
        allow from all
    </Location>

    <Location "/site-media" >
        SetHandler None
        allow from all
    </Location>

    <LocationMatch "\.(jpg|gif|png)$">
        SetHandler None
        allow from all
    </LocationMatch>
</VirtualHost>
于 2009-08-26T23:54:53.873 に答える