DEBUGをfalseにすると定義したModelのみ管理画面でNot Found

348 views
Skip to first unread message

Ido

unread,
Aug 19, 2011, 3:38:36 AM8/19/11
to django-ja
はじめまして。
Idoと申します。

問い合わせフォームを作成しています。
DEBUG=Trueでは問題ないのですが、DEBUG=Falseにすると定義したモデルのみ管理画面で404エラーになります。
Auth、Sites、プロジェクト名のページには問題なくアクセスできます。
ModelFormからの投稿も問題なく行えます。

環境は以下のとおりです。
OS : RHEL4
Python 2.7.2
SQLite 3.7.7
Apache 2.0.52
mod_wsgi 3.3 (デーモンモード)
Django 1.3
SQLite 3.7.7

また別環境ではDEBUG=Trueにしても問題なく動作しました。
OS : Mac OS X(10.6.8)
Python : 2.7.2
SQLite 3.6.22
Apache 2.2.17
mod_wsgi 3.3 (デーモンモード)
Django 1.3

解決の糸口だけでもつかめればと思います。
よろしくお願いします。

tokibito

unread,
Aug 19, 2011, 12:56:56 PM8/19/11
to django-ja
岡野です。

DEBUG=Falseの状態でmanage.py shellを使うことはできますか?
可能であれば、シェルから

from django.contrib import admin
admin.autodiscover()

この2行を実行して、エラーがでないことを確認してみてください。
また、apacheに設定しているmod_wsgiのスクリプトのsettingsの指定方法が正しいか(キー名のtypoがないかなど)、再度確認し
てみてください。
読み込み権限や書き込み権限でエラーになっている場合は、Apacheのエラーログに出力されていることもあります。

Ido

unread,
Aug 21, 2011, 9:42:20 AM8/21/11
to django-ja
Idoです。

岡野さん、アドバイスありがとうございます。

manage.py shell上で
from django.contrib import admin
admin.autodiscover()
を試したところエラーは発生しませんでした。

apacheのログでもそれらしいエラーは見つかりませんでした。
(apacheのログレベルはdebugにしています)

情報として有用かわかりませんが
manage.py shell
from django.contrib import admin
のあとに
admin.site.urls
とすると以下のような出力がありました。
定義したModelクラスとModelAdminクラスはDjangoに
認識されているのではないかと思います。

.
.
.
<RegexURLResolver [
<RegexURLPattern contact_inquiry_changelist ^$>,
<RegexURLPattern contact_inquiry_add ^add/$>,
<RegexURLPattern contact_inquiry_history ^(.+)/history/$>,
<RegexURLPattern contact_inquiry_delete ^(.+)/delete/$>,
<RegexURLPattern contact_inquiry_change ^(.+)/$>
] (None:None) ^contact/inquiry/>
.
.
.

mod_wsgiのスクリプトも貼っておきます。
OS側でPYTHONPATHは設定していません。

import sys,os
path = os.path.dirname(os.path.abspath(__file__))
if path not in sys.path:
sys.path.append(path)
os.environ['DJANGO_SETTINGS_MODULE'] = 'app.settings'

from app.core import monitor
monitor.start()

#os.environ['DJANGO_BRANCH'] = 'development'
os.environ['DJANGO_BRANCH'] = 'release'

import django.core.handlers.wsgi
application = django.core.handlers.wsgi.WSGIHandler()


DJANGO_BRANCHはDjangoの環境を分岐させるために使用しています。

少しでも怪しそうな部分があればご指摘いただきたいと思います。
よろしくお願いします。

Yasushi Masuda

unread,
Aug 21, 2011, 10:14:31 AM8/21/11
to djan...@googlegroups.com
Idoさん

Apacheのログで、404が発生したURLを調べてみてください。

1. Apacheのホスト名、ポート名は正しく定義されているでしょうか? UseCanonicalName の設定によって、リダイレクト時の
URL が意図しない内容になっていませんか?
2. もし、管理ページにSSLでアクセスしているなら、SSLが正しく設定されているか調べてみてください。


2011年8月21日22:42 Ido <ido.o...@gmail.com>:

> --
> ----------------- http://djangoproject.jp/ -----------------
> You received this message because you are subscribed to the Google Groups "django-ja" group.
> To post to this group, send email to djan...@googlegroups.com
> To unsubscribe from this group, send email to django-ja-...@googlegroups.com
> For more options, visit this group at http://groups.google.com/group/django-ja

--
Yasushi Mausda
http://ymasuda.jp/
whosaysni at twitter/gmail

Ido

unread,
Aug 21, 2011, 6:56:40 PM8/21/11
to django-ja
Idoです。

Masudaさん、ありがとうございます。

ApacheですがUseCanonicalNameはoffになっています。
またバーチャドメインで運用しており、設定は以下のようになっています。

WSGIPythonHome /usr/local
WSGIPythonPath /usr/local/lib/python2.7/site-packages

<VirtualHost xxx.xxx.xxx.xxx:80>
ServerName xxx.com
DocumentRoot /var/www/html/xxx/site/
ErrorLog logs/xxx_error_log
CustomLog logs/xxx_log combined env=!image-etc-file
LogLevel debug

WSGIDaemonProcess app user=homepage group=homepage threads=5
WSGIProcessGroup app
Include virtual_domain.d/xxx.com.conf.d/*.conf
</VirtualHost>

<VirtualHost xxx.xxx.xxx.xxx:443>
ServerName xxx.com
DocumentRoot /var/www/html/xxx/site/
ErrorLog logs/xxx_error_log
CustomLog logs/xxx_log combined env=!image-etc-file
LogLevel debug

SSLEngine on
SSLCertificateFile /etc/httpd/conf/ssl.crt/server.crt
SSLCertificateKeyFile /etc/httpd/conf/ssl.key/server.key

WSGIDaemonProcess app_ssl user=homepage group=homepage threads=5
WSGIProcessGroup app_ssl
Include virtual_domain.d/xxx.com.conf.d/*.conf
</VirtualHost>

管理画面はhttp,httpsどちらでアクセスした場合も404エラーです。
ログ出力は以下のとおりです。

"GET /admin/contact/inquiry/ HTTP/1.1" 404 18 "-" "Mozilla/5.0
(Macintosh; Intel Mac OS X 10_6_8) AppleWebKit/535.2 (KHTML, like
Gecko) Chrome/15.0.854.0 Safari/535.2"

"GET /admin/contact/inquiry HTTP/1.1" 404 18 "-" "Mozilla/5.0
(Macintosh; Intel Mac OS X 10_6_8) AppleWebKit/535.2 (KHTML, like
Gecko) Chrome/15.0.854.0 Safari/535.2"

SSLについては現在自己認証局で発行した証明書をしようしていますので
SSL通信開始時にはアラートが表示されますが、以降は問題なく動作していると思います。


On Aug 21, 11:14 pm, Yasushi Masuda <whosay...@gmail.com> wrote:
> Idoさん
>
> Apacheのログで、404が発生したURLを調べてみてください。
>
> 1. Apacheのホスト名、ポート名は正しく定義されているでしょうか? UseCanonicalName の設定によって、リダイレクト時の
> URL が意図しない内容になっていませんか?
> 2. もし、管理ページにSSLでアクセスしているなら、SSLが正しく設定されているか調べてみてください。
>
> 2011年8月21日22:42 Ido <ido.ojos...@gmail.com>:

Yasushi Masuda

unread,
Aug 24, 2011, 7:39:12 AM8/24/11
to djan...@googlegroups.com
Ido さん

最初のポストを拝見すると、
Apache 2.0 では DEBUG=False のときに×
Apache 2.2 では DEBUG=False でも? ◯

とありますね。Djangoのバージョンは同じようですし、私はちょっと手詰まりです。
manage.py runserverでは、DEBUGの値が違うときに動作が変わるのでしょうか?


2011年8月22日7:56 Ido <ido.o...@gmail.com>:

Mucius

unread,
Oct 5, 2011, 12:01:16 PM10/5/11
to django-ja
muciusと申します。

もしかして、models.pyの中で admin.site.register()を書いて
いませんか?

ver.1.0のチュートリアルでは、そのようになっていたので
僕もそうしていたのですが、Idoさんと同様の症状になって,
はまっておりました。

ところが、1.3のマニュアルを読んでいて、ふと、
別途 admin.pyを作成して、そちらにadmin.site.register()と
カスタムadminクラスを移動してみたところ、動作するようになりました。

ただ、何故models.pyの中に書くといけないのかは不明です。
import の問題でしょうか...
Reply all
Reply to author
Forward
0 new messages