diadia

趣味のプログラムを書く 

django リダイレクト機能について

URL dispatcher — Django 1.4.6 documentation

 

 

クラス別汎用ビューを学んでいると、データ表示系のものとデータベース編集系のものに別れていることが分かってきた。

データベース編集系には例えば、CreateViewやUpdateViewがある。

こいつらは一種の特徴があって、フォームにデータ入力し送信すると、別のページに飛ばすことが一連の流れとして組み込まれている。

そういうわけでこちらが飛ばす先のページを予め設定していないとエラーになってしまう。

エラー:リダイレクト先を設定してねって。

 

 

このリダイレクト先を設定する方法について少しわかったのでまとめておく。

リダイレクト先を決める機能はsuccess_url 

使い方はsuccess_url=reverse_lazy('urls.pyで定めたビューネーム')と設定すればオッケイ。とても簡単。

 

ただしurlが動的な場合には、話が違ってくる。

なぜならこの方法が通用しないから。

reverse_lazyの引数にビューネームに加え、遷移したい数字等も必要になるのだ。

要は、success_url=reverse_lazy("ビューネーム",4)みたいなことがしたいわけだ。

でこの4は状況にによっては5や6にしたいってわけ。

get_success_url(self)を使うと、urls.pyの urlが取得できると思われる。

pathの第一引数のこと。

def get_url_success(self):

     return reverse_lazy("urls.pyのname",kwargs={"pk":self.kwargs["pk"]} )