ジレンマ
私はかなり扱いにくいので、アプリ内の別のモジュールにviews.py
分離したいと考えています。views
ただし、次の 2 つの理由から、これが良いアイデアかどうかはわかりません。
ビュー ファイルがアプリ名と同じ名前の場合、 を使用しないとモデルをインポートできない
django.db.get_model
ため、私のアプローチに問題があるのではないかと心配しています。モジュール内で名前の衝突を避けるのがベストプラクティスだと聞いたことがあります。ビュー ファイルの名前を変更する必要がありますか?views
モジュールを作成することが一般的に Django コミュニティ内で良い習慣と見なされているかどうかはわかりません。
例
たとえば、モデルとモデルをblogs
持つという名前のアプリの場合:Blog
Post
blogs/
__init__.py
models.py
urls.py
views/
__init__.py
blogs.py
posts.py
これが私のものblogs.views.blogs
です:
# project/blogs/views/blogs.py
from django.db.models import get_model
from django.shortcuts import get_object_or_404
from django.views.generic import ListView, DetailView
# Cannot import model directly, results in `ImportError: No module named models`.
# This can be resolved if I resolve the name collision between this file and
# the app itself.
#
# from blogs.models import Blog
class BlogListView(ListView):
model = get_model('blogs', 'Blog')
def get_queryset(self):
return self.model.objects.all()
class BlogDetailView(DetailView):
model = get_model('blogs', 'Blog')
def get_object(self):
blog_pk = self.kwargs.get('blog_pk')
return get_object_or_404(self.model.objects, pk=blog_pk)
質問
私の質問は 2 つあります。
そもそも自分の見解を分離する必要がありますか?
もしそうなら
get_model
、良いアイデアを使用していますか、またはこの方法を使用せずにモデルを直接インポートする方法はありますか? または、問題を完全に回避するために、たとえば接尾辞_views
(例: )を追加して、ビュー ファイル名を変更する必要がありますか?blogs.views.blogs_views.py