2017-12-19 18 views
2

Djangoで「アカウントを削除」機能を作成しようとしています。私はこの目的のために​​を使用します。DJANGO:TemplateDoesNotExist:auth/user_confirm_delete.html

問題は、このビューを呼び出した後、Djangoを上げることです。

Request Method: GET 
Request URL: http://127.0.0.1:8000/profiles/delete-account/ 
Django Version: 1.11.7 
Exception Type: TemplateDoesNotExist 
Exception Value:  
auth/user_confirm_delete.html 

マイビュー:それはこのtemplateをレンダリングしようとすると、そのようなテンプレートが存在しない理由、それはされていた場合、なぜ

class DeleteAccount(LoginRequiredMixin,DeleteView): 
    model = User 

    def get_object(self, queryset=None): 
     user = self.request.user 
     userprofile = user.userprofile 
     userprofile.prepare_to_delete_account() 
     return user 

と呼ばれる?

これを修正する方法を知っていますか?

答えて

4

このビューは、テンプレートをレンダリングして、オブジェクトを削除することを確認します。

デフォルトでは、アプリ名とモデル名からテンプレート名auth/user_confirm_delete.htmlが生成されます。

別のテンプレートを使用する場合は、template_nameと設定します。

class DeleteAccount(LoginRequiredMixin,DeleteView): 
    model = User 
    template_name = 'delete_account.html' 

テンプレートを作成する必要があります.Djangoにはテンプレートが含まれていません。あなたが拡張できる例in the docsがあります:

<form action="" method="post">{% csrf_token %} 
    <p>Are you sure you want to delete "{{ object }}"?</p> 
    <input type="submit" value="Confirm" /> 
</form> 
+0

私は理解します。この目的のために、POSTへのGETの変更は十分であるべきです、ありがとう。 –

+1

これを行うと、ユーザーやボットがGETリクエストでURLに直接アクセスすると、サーバーエラーが発生することがあります。これを避けるには 'http_method_names = ['POST']'を設定することができます。 – Alasdair

+0

良い点、ありがとう –