初めまして。
1月8日から2月24日まで、株式会社MNUに実務訓練としてお世話になっています、
豊橋技術科学大学の近藤です。
実務訓練の期間中に学んだ事、感じた事を、
こちらのブログにまとめていこうと考えています。
成果を出し、プログラマとして成長できるよう、
頑張りたいと思います。
現在作成中の、DjangoのAdminサイト出力機能を利用した、
汎用的なフォーム出力機能について、まとめてみたいと思います。
DjangoのAdminサイト出力を実装しているのは、
今回は最初に、モデルのインスタンス追加・編集・一覧・削除
機能の実装から始めました。
ModelAdmin内の response_add, response_change,
response_post_save_add, response_post_save_change,
delete_view にて、TemplateResponseを返してページ表示を行っています。
なので、viewsでこれらの関数を呼び出せば、
Adminページと同様のものが出力されます。
しかしながら、リンク先まで同じであったり
(つまり、adminページに飛んでしまう)
管理者権限を持っていないと使えないなど、問題があるため
ModelAdminをoverrideしたクラスを作成し、実装することにしました。
Responseを返す関数内で、adminのページをリンク先として指定しているので、
ページ名の変更を行う必要がありました。
また、テンプレート内でも同様の部分があるため、
変更しました。
# ex. In response_add
snipper_change, snippet_add, snippet_listを呼び出すことで、
任意のページにadminページを表示できました。
今後は、viewsやurlsの記述を自動化するため、
AdminSiteも同様にオーバーライドし編集していこうと思います。
1月8日から2月24日まで、株式会社MNUに実務訓練としてお世話になっています、
豊橋技術科学大学の近藤です。
実務訓練の期間中に学んだ事、感じた事を、
こちらのブログにまとめていこうと考えています。
成果を出し、プログラマとして成長できるよう、
頑張りたいと思います。
現在作成中の、DjangoのAdminサイト出力機能を利用した、
汎用的なフォーム出力機能について、まとめてみたいと思います。
DjangoのAdminサイト出力を実装しているのは、
- AdminのIndex部分:django.contrib.admin.sites
- 各モデルのに関する部分:django.contrib.admin.options
今回は最初に、モデルのインスタンス追加・編集・一覧・削除
機能の実装から始めました。
ModelAdmin内の response_add, response_change,
response_post_save_add, response_post_save_change,
delete_view にて、TemplateResponseを返してページ表示を行っています。
なので、viewsでこれらの関数を呼び出せば、
Adminページと同様のものが出力されます。
しかしながら、リンク先まで同じであったり
(つまり、adminページに飛んでしまう)
管理者権限を持っていないと使えないなど、問題があるため
ModelAdminをoverrideしたクラスを作成し、実装することにしました。
Responseを返す関数内で、adminのページをリンク先として指定しているので、
ページ名の変更を行う必要がありました。
また、テンプレート内でも同様の部分があるため、
変更しました。
# ex. In response_add
if post_url_continue is None:
post_url_continue = reverse('%s_%s_change', %
(opts.app_label, opts.model_name),
変えた名前でurlを用意し、viewsに記述した関数でそれぞれ、snipper_change, snippet_add, snippet_listを呼び出すことで、
任意のページにadminページを表示できました。
今後は、viewsやurlsの記述を自動化するため、
AdminSiteも同様にオーバーライドし編集していこうと思います。
コメント
コメントを投稿