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

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

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

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

解決済

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

deango
deango

総合スコア107

Django

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

1回答

0評価

0クリップ

73閲覧

投稿2022/05/04 13:09

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

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

html

{% for item in follower_list %} <tr class="text"> <td class="text-center">{{ item.nickname }}</td> <td class="text-center align-middle"> {# 対象ユーザーを自分もお気に入り登録している場合 #} {% if item in following_list %} {# Unfollowボタンで対象ユーザーに対して、rm_relation関数を呼び出してお気に入り解除 #} <form action="{% url 'accounts:rm_relation' pk=item.id %}" method="post"> <button type="submit" class="btn btn-outline-danger btn-sm" name="button"> Unfollow </button> {% csrf_token %} </form> {# 対象ユーザーを自分がお気に入り登録していない場合 #} {% else %} <form action="{% url 'accounts:mk_relation' pk=item.id %}" method="post"> <button type="submit" class="btn btn-outline-primary btn-sm" name="button"> Follow </button> {% csrf_token %} </form> {% endif %} </td> </tr> {% endfor %}

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

accounts/views.py

def mk_relation(request, pk): # 追加 # ログインユーザーを取得 follower = get_object_or_404(CustomUser, pk=request.user.pk) # フォローしたい相手(引数pkをテンプレートから取得) following = get_object_or_404(CustomUser, pk=pk) make_relation = Relationship(follower_id=follower.id, following_id=following.id) make_relation.save() return redirect('accounts:userlist') def rm_relation(request, pk): # 追加 # ログインユーザーを取得 follower = get_object_or_404(CustomUser, pk=request.user.pk) # フォローしたい相手(引数pkをテンプレートから取得) following = get_object_or_404(CustomUser, pk=pk) # Relationship内のデータレコード(objects)を削除 # model.objects.filter(***)でQuetySetを取得し.delete()で削除 clear_relation = Relationship.objects.filter(follower_id=follower.id, following_id=following.id) clear_relation.delete() return redirect('accounts:userlist')

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

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

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

良い質問の評価を上げる

以下のような質問は評価を上げましょう

  • 質問内容が明確
  • 自分も答えを知りたい
  • 質問者以外のユーザにも役立つ

評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

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

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

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

teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

  • プログラミングに関係のない質問
  • やってほしいことだけを記載した丸投げの質問
  • 問題・課題が含まれていない質問
  • 意図的に内容が抹消された質問
  • 過去に投稿した質問と同じ内容の質問
  • 広告と受け取られるような投稿

評価を下げると、トップページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

まだ回答がついていません

会員登録して回答してみよう

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

ただいまの回答率
87.20%

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

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

質問する

関連した質問

同じタグがついた質問を見る

Django

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