0

私はウェブサイトを構築するためにmod_wsgiでdjango1.1.4とpython2.6.6を使用しています

クライアントは、404ページと500ページにロゴとホームページのリンクを含めることを望んでいます。シンプルなページを書きました。512バイトよりも大きいです。PROJECT_ROOT /templates/内のファイルのペースを調整しました

デバッグをTrueエラーに設定すると、404エラーと表示されます。しかし、に設定してFalse存在しないページを読み込もうとすると、次のような内部サーバーエラーが発生します。

内部サーバーエラー

サーバーで内部エラーまたは構成ミスが発生し、リクエストを完了できませんでした。

サーバー管理者のroot@localhostに連絡して、エラーが発生した時刻と、エラーの原因となった可能性のあるすべてのことを通知してください。

このエラーの詳細については、サーバーエラーログを参照してください。Apache / 2.2.15(CentOS)サーバー(www.anglais-verbe.comポート80)

私は何をすべきか?

404、500を処理するためのビューを作成したり、urls.pyに変更を加えたりしたことはありません。

これは私の最初の本格的なdjangoプロジェクトであり、何が問題になっているのかわかりません。

アップデート:

私の管理者のトレースバックメールは

File "/usr/lib/python2.6/site-packages/django/core/handlers/base.py", line 125, in get_response
   callback, param_dict = resolver.resolve404()

 File "/usr/lib/python2.6/site-packages/django/core/urlresolvers.py", line 267, in resolve404
   return self._resolve_special('404')

 File "/usr/lib/python2.6/site-packages/django/core/urlresolvers.py", line 259, in _resolve_special
   callback = getattr(self.urlconf_module, 'handler%s' % view_type)

AttributeError: 'module' object has no attribute 'handler404'
4

2 に答える 2

2

メインのurls.pyに404ハンドラーを設定できます。

handler404 = 'yourproject.views.file_not_found_404'

次に、views.pyに次のビューを作成する必要があります。

from django.shortcuts import render_to_response
from django.template import RequestContext

def file_not_found_404(request):
    #create some variables here if you like
    path = request.path
    response = render_to_response('404.html', locals(),
                              context_instance=RequestContext(request))
    response.status_code = 404
return (response)

次に、テンプレートフォルダに404のテンプレートを作成できます。

<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN">
<html><head>
<title>404 Not Found</title>
</head><body>
<h1>Not Found</h1>
<p>The requested URL {{ path }} was not found on this server.</p>
<hr>
<address>Apache/2.2.3 (CentOS) Server at yourdomain.com port 80</address>
</body></html>

これがお役に立てば幸いです:)これは500エラーでも同様に機能するはずです

于 2012-01-09T17:25:25.850 に答える
1
  1. テンプレートファイルに名前が付けられていることを再確認し404.html500.html
  2. の場合debug=FALSE、デフォルトのDjangoの動作は、管理者にメールを送信することです。トレースバックは何と言っていますか?
  3. このメールがない場合は、apacheエラーログを調べて、手がかりがあるかどうかを確認してください。Debian(頭のてっぺんからCentOSを知らない)では、apache2を想定すると、場所は次のようになります。

    tail /var/log/apache2/error.log
    
于 2012-01-09T17:27:14.773 に答える