

お世話になります。以下にご質問させてください。  
djangoのバージョンは3.1.7です。

### 達成したいこと

404エラーとなる際にカスタマイズした404.htmlが表示されるようにしたい。

### これまでに実施した内容

  * views.py にて `get_object_or_404` で404エラーを返すようにしている。
  * ルートディレクトリ内に新しくtemplatesを作成。その中に404.htmlを作成。
  * settings.py に `import os` を追記（"os is not defined." となるため）
  * settings.py - TEMPLATES - 'DIRS' に `os.path.join(BASE_DIR, 'templates')` を追加

### 上記内容の実施結果

デフォルトの404エラーのページが表示されるのみ。  
カスタマイズした404のページが表示されない。


CC BY-SA 4.0
2021-03-17T10:13:08.760
74719
2021-03-19T05:45:04.877
2021-03-17T10:46:03.230
3060
44380
question
python python3 django
カスタマイズした404.htmlが反映されない


Windows10のdjango 3.1.7上で、末尾のpowershellスクリプトを実行して動作確認したところ、正しくカスタム404が表示されました。  
下記の設定にお間違えがないかをご確認ください。

  * `manage.py`と同階層に`templates`フォルダを作っている
  * `settings.py`を`DEBUG = False`に切り替えている  
(デバッグモードでは強制的に詳細なエラーメッセージが[表示されます](https://djangobrothers.com/blogs/django_404_page/))

※手順が冗長になるので割愛しましたが、[polls.py](https://docs.djangoproject.com/ja/3.1/intro/tutorial02/)を作成して`get_object_or_404`を呼び出しても設定を間違えなければカスタム404が表示されることを確認しました。

powershellスクリプト:

[code]

    # C:\django にプロジェクトページを新規作成
    $django = "C:\django" 
    if(-not (Test-Path $django)) { mkdir $django }
    cd $django
    #rm -r mysite
    django-admin startproject mysite
    
    # テンプレート作成
    cd $django\mysite\
    mkdir templates
    "Hello 404." | Out-File ".\templates\404.html" -Encoding default
    
    # settings.pyを置換
    cd .\mysite\
    $settings = Get-Content settings.py
    $settings = $settings -replace "'DIRS': \[\],", "'DIRS': [os.path.join(BASE_DIR, 'templates')]," 
    $settings = $settings -replace "import Path", "import Path`r`nimport os" 
    # デバッグモードでは 404.html を読みこまないので本番モードに変更
    $settings = $settings -replace "DEBUG = True", "DEBUG = False" 
    $settings = $settings -replace "ALLOWED_HOSTS = \[\]", "ALLOWED_HOSTS = ['127.0.0.1']" 
    # 上書き保存
    $settings | Out-File ".\settings.py" -Encoding default
    
    # 実行
    cd $django\mysite\
    start "python" -ArgumentList "manage.py", "runserver" -PassThru
    start "http://127.0.0.1:8000/polls/" 
    
[/code]


CC BY-SA 4.0
2021-03-19T05:45:04.877
74759
2021-03-19T05:45:04.877
9820
74719
answer