質問編集履歴

1

forms.pyのスクリプトを一部更新。テンプレートファイルを新たに追記。

2022/07/03 01:59

投稿

kakeru0225
kakeru0225

スコア37

test CHANGED
File without changes
test CHANGED
@@ -8,7 +8,9 @@
8
8
  ただ、現状の登録失敗の動作としてはフォームに入力したパスワードがクリアされるだけでエラーメッセージが表示されるわけではないので、登録失敗後にエラーメッセージを表示させたい。
9
9
 
10
10
  <お伺いしたいこと>
11
+ forms.py内におけるメールアドレスが既に登録されていた場合の例外処理の書き方
11
- forms.py内で、エラーメッセージを表示さように記述したい。
12
+ テンプレートにおける、エラーメッセージを表示さ処理の書き方
13
+
12
14
 
13
15
  ---
14
16
 
@@ -50,21 +52,6 @@
50
52
  self.add_error('password1', 'パスワードが一致しません。正しいパスワードを入力してください。')
51
53
  raise ValidationError('パスワードが一致しません。正しいパスワードを入力してください。')
52
54
  return password
53
-
54
- def clean_email(self):
55
- email1 = self.cleaned_data["email"]
56
- email = CustomUser.objects.filter(
57
- email=email1).exists()
58
- if email:
59
- self.add_error('email', 'このメールアドレスは既に使用されています。他のメールアドレスを登録してください。')
60
- raise ValidationError('このメールアドレスは既に使用されています。他のメールアドレスを登録してください。')
61
-
62
- """
63
- if email == email1:
64
- self.add_error('email', 'このメールアドレスは既に使用されています。他のメールアドレスを登録してください。')
65
- raise ValidationError('このメールアドレスは既に使用されています。他のメールアドレスを登録してください。')
66
- return email
67
- """
68
55
 
69
56
  ```
70
57
 
@@ -125,6 +112,59 @@
125
112
 
126
113
  ```
127
114
 
115
+ signup_1.html(フォームのテンプレート)
116
+ ```signup_1.html
117
+ {% load static %}
118
+ {% load widget_tweaks %}
119
+ {{ form.title.errors }}
120
+
121
+ <!DOCTYPE html>
122
+ <html lang="ja">
123
+
124
+ <head>
125
+ <meta charset="UTF-8">
126
+ <title>アカウント作成</title>
127
+ <link rel="stylesheet" href="{% static 'css/toppage/signup_1.css' %}">
128
+ </head>
129
+
130
+ <header>
131
+ <h2 class="title">アカウントのセットアップ</h2>
132
+ <p class="description">新しいアカウントを作成しよう</p>
133
+ </header>
134
+
135
+ <body>
136
+ <form method='POST' class='form'>
137
+ {% csrf_token %}
138
+ <p>ユーザー名</p>
139
+ <br>{{ form.username | add_class:"form-control" }}
140
+ <p>メールアドレス</p>
141
+ <br>{{ form.email | add_class:"form-control" }}
142
+ <p>パスワード</p>
143
+ <br>{{ form.password | add_class:"form-control"}}
144
+ <p>パスワード確認用</p>
145
+ <br>{{ form.password1 | add_class:"form-control"}}
146
+
147
+ {% if form.errors %}
148
+ <ul class="error_message">
149
+ {% for error in form.password1.errors %}
150
+ <li>{{ error }}</li>
151
+ {% endfor %}
152
+ </ul>
153
+ {% endif %}
154
+
155
+ <input type='submit' value='登録する' class="submit-bottun">
156
+ </form>
157
+ </body>
158
+
159
+
160
+ <footer>
161
+ </footer>
162
+
163
+
164
+ </html>
165
+
166
+ ```
167
+
128
168
  views.py
129
169
  ```views.py
130
170
  from django.shortcuts import render