質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Django

DjangoはPythonで書かれた、オープンソースウェブアプリケーションのフレームワークです。複雑なデータベースを扱うウェブサイトを開発する際に必要な労力を減らす為にデザインされました。

Q&A

解決済

1回答

536閲覧

djangoのviewでのリダイレクトの指定について

deango

総合スコア161

Django

DjangoはPythonで書かれた、オープンソースウェブアプリケーションのフレームワークです。複雑なデータベースを扱うウェブサイトを開発する際に必要な労力を減らす為にデザインされました。

0グッド

0クリップ

投稿2022/05/04 13:09

djangoでWEBアプリを作成しています。
フォロー機能があり、以下の3つのページでフォロー&アンフォローの実行が可能で、
①diary/followers.html
②diary/followings.html
③accounts/userlist.html

その動作の際に、以下のようなフォームを実行しており、

html

1{% for item in follower_list %} 2 <tr class="text"> 3 <td class="text-center">{{ item.nickname }}</td> 4 <td class="text-center align-middle"> 5 {# 対象ユーザーを自分もお気に入り登録している場合 #} 6 {% if item in following_list %} 7 {# Unfollowボタンで対象ユーザーに対して、rm_relation関数を呼び出してお気に入り解除 #} 8 <form action="{% url 'accounts:rm_relation' pk=item.id %}" method="post"> 9 <button type="submit" class="btn btn-outline-danger btn-sm" name="button"> 10 Unfollow 11 </button> 12 {% csrf_token %} 13 </form> 14 {# 対象ユーザーを自分がお気に入り登録していない場合 #} 15 {% else %} 16 <form action="{% url 'accounts:mk_relation' pk=item.id %}" method="post"> 17 <button type="submit" class="btn btn-outline-primary btn-sm" name="button"> 18 Follow 19 </button> 20 {% csrf_token %} 21 </form> 22 {% endif %} 23 </td> 24 </tr> 25{% endfor %}

3つとも以下の共通のリレーションを参照しています。

accounts/views.py

1def mk_relation(request, pk): # 追加 2 # ログインユーザーを取得 3 follower = get_object_or_404(CustomUser, pk=request.user.pk) 4 # フォローしたい相手(引数pkをテンプレートから取得) 5 following = get_object_or_404(CustomUser, pk=pk) 6 make_relation = Relationship(follower_id=follower.id, following_id=following.id) 7 make_relation.save() 8 return redirect('accounts:userlist') 9 10def rm_relation(request, pk): # 追加 11 # ログインユーザーを取得 12 follower = get_object_or_404(CustomUser, pk=request.user.pk) 13 # フォローしたい相手(引数pkをテンプレートから取得) 14 following = get_object_or_404(CustomUser, pk=pk) 15 # Relationship内のデータレコード(objects)を削除 16 # model.objects.filter(***)でQuetySetを取得し.delete()で削除 17 clear_relation = Relationship.objects.filter(follower_id=follower.id, following_id=following.id) 18 clear_relation.delete() 19 return redirect('accounts:userlist') 20

現在リダイレクト先はredirect('accounts:userlist')としているのですが、
ログイン後のリダイレクトのように、リダイレクト先を元居たページにする方法はありますでしょうか。

例、diary/followers.htmlで実行した場合は、diary/followers.htmlにリダイレクトしたい。

お力添え宜しくお願い致します。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

自己解決

redirectに元居たページを指定する方法が見つからなかったので、
以下のページごとにリレーションを作成し、各ページをリダイレクト先としました。
①diary/followers.html
②diary/followings.html
③accounts/userlist.html

followers_mk_relation
followers_rm_relation
followings_mk_relation
followings_rm_relation
userlist_mk_relation
userlist_rm_relation

投稿2022/05/06 11:35

編集2022/05/06 11:35
deango

総合スコア161

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問