【WaZ】イベントの作成機能追加!
おはようございます、NAKKA-Kです。 今回もWaZの進捗ブログを書いていきます。
今回の進捗報告
今回は、WaZでメインの機能になるイベントに関する機能追加です。
今回できるようになったことは、以下です。
- イベント一覧・詳細
- イベント作成・編集・削除
- アカウントの作成
- イベントへの参加
ここまででWaZにおいてメインとなる機能は追加されました。 まだまだ機能は足りませんけどね。
現在の画面
機能説明
アカウント
WaZでは基本的にアカウントを元に、イベント周りを扱うことになります。
イベント
イベントは各アカウントで、自由に作成できます。
イベントの作成、イベントへの参加、等々はアカウントでログインした状態でしかできません。
イベントの閲覧やアカウントの作成などはログインしていなくてもできます。
イベントの編集・削除は基本的に、イベントの作成者本人にしかできません。
イベント参加
イベントへの参加・離脱は本人にしかできません。
実装について
見た目に関してはbootstrapを使いつつ、とりあえずの実装のためあまりこだわり過ぎずに作りきってしまいます。 その他、FontAwesomeなどのアイコンも使用しています。 バックエンドの実装はDjangoで行なっているので、そちらをメインに概要紹介します。
アカウント
Userは、django.contrib.auth.models.AbstractUser
を継承したカスタムUserクラスを作成して使用しています。
アカウント作成はdjango.contrib.auth.forms.UserCreationForm
を拡張し、CreateViewに拡張したフォームを持たせて実装しています。
アカウント系の実装だけをまとめたaccounts
というアプリを作成し、役割を他の部分と分割しました。
イベント
ここに関してもevents
アプリを作成し、役割の分割をしました。
イベント周りの実装も、`GenericClassView系統をできるだけ継承させ、フレームワークの流れに沿った実装を心がけました。
from django.views.generic import ListView from django.views.generic import CreateView from django.views.generic import UpdateView from django.views.generic import DeleteView from django.views.generic import DetailView
このようにフレームワークにすでに実装された流れに沿って実装しておくと、あとあと見るときにどこで何をやっているのかがわかりやすかったり、変更が楽になります。
そしてすでにあるものを使うことで開発コストも下げたり、実装漏れも少なくすることができます。
イベント回りに関しては処理が多くなることがわかっていたので、Djangoでアプリを生成したときにもともと存在するviews.py
を削除し、views
ディレクトリを作成し、その中に適切にファイル分割したviewの処理をまとめるようにしました。
このように処理が多くなったり、煩雑になる場合は適切にファイル分けをすることが必要です。
ファイル分けをする場合は、それらのファイルがなんの分野に当たるのか明確にするために、今回であればviews
というディレクトリにまとめ、その中でそれぞれの役割がわかりやすいファイル名をつけて保存すると後々の保守性や可読性の向上につながります。
まとめ
今回の機能追加は作り始めのため、基本的な機能かつ簡単な実装機能ばかりなので、そこまで説明することもありませんでした。 今後、細かい実装などあれば適宜紹介していきたいと思います。