Djangoでフォームを追加させるコードを書きたいのですが表示の仕方がわからず質問させていただきました。
複数のマイページを作れるようにしたいです。
エラーは起きていません。
「保存してもう一つ追加」のボタンを押しても情報が更新されるだけで新しいマイページを作成することができません。
user_detail.htmlをいじればマイページを複数表示させることができると思っているのですがやり方がわかりません。
助言いただければ幸いです。
他に、もっと簡単なやり方があれば教えていただきたいです。
views.py
python
1class UserDetail(OnlyYouMixin, generic.DetailView): 2 """ユーザーの詳細ページ""" 3 model = User 4 template_name = 'register/user_detail.html' # デフォルトユーザーを使う場合に備え、きちんとtemplate名を書く 5 6 7class UserUpdate(OnlyYouMixin, generic.UpdateView): 8 """ユーザー情報更新ページ""" 9 model = User 10 template_name = 'register/user_form.html' # デフォルトユーザーを使う場合に備え、きちんとtemplate名を書く 11 12 def form_valid(self, form): 13 post = form.save() 14 # 保存してもう一つ追加ボタンのとき 15 if 'save_and_add' in self.request.POST: 16 return redirect('register:user_update', pk=self.kwargs['pk']) 17 18 return redirect('register:user_detail', pk=self.kwargs['pk'])
user_detail.html 遷移先のページです。
html
1{% extends "register/base.html" %} 2{% block content %} 3<table class="table"> 4 <tbody> 5 <tr> 6 <th>名前</th> 7 <td>{{ user.staff_name }}</td> 8 </tr> 9 <tr> 10 <th>メールアドレス</th> 11 <td>{{ user.email }}</td> 12 </tr> 13 <tr> 14 <th>電話番号</th> 15 <td>{{ user.phone_number }}</td> 16 </tr> 17 <tr> 18 <th>自己紹介</th> 19 <td>{{ user.self_introduction }}</td> 20 </tr> 21 </tbody> 22</table>
user_form.html
html
1{% extends "register/base.html" %} 2{% block content %} 3<form action="" method="POST"> 4 {{ form.non_field_errors }} 5 <table class="table"> 6 <tbody> 7 {% for field in form %} 8 <tr> 9 <th><label for="{{ field.id_for_label }}">{{ field.label }}</label></th> 10 <td>{{ field }}</td> 11 <td>{{ field.errors }}</td> 12 </tr> 13 {% endfor %} 14 </tbody> 15 </table> 16 {% csrf_token %} 17 <button type="submit" class="btn btn-success btn-lg" >送信</button> 18 <button class="btn btn-primary" type="submit" name="save_and_add">保存してもう一つ追加</button> 19 20</form> 21{% endblock %}
よろしくお願いいたします
あなたの回答
tips
プレビュー