mod*_*che 4 python django django-views python-import
我views.py变得非常笨拙,所以我想将它分成views我应用程序内部的单独模块.但是,我不确定这是一个好主意,原因有两个:
如果我的视图文件与应用程序名称相同,我无法在不使用的情况下导入模型django.db.get_model,因此我担心我的方法可能存在缺陷.我听说最好避免模块内的名称冲突; 我应该重命名我的视图文件?
我不确定创建一个views模块是否被认为是Django社区中的良好实践.
例如,对于名为app的应用程序blogs,使用Blog模型和Post模型:
blogs/
__init__.py
models.py
urls.py
views/
__init__.py
blogs.py
posts.py
Run Code Online (Sandbox Code Playgroud)
这是我的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)
Run Code Online (Sandbox Code Playgroud)
我的问题是双重的:
我应该首先分开我的观点吗?
如果是这样,是使用get_model一个好主意,还是有一种方法可以直接导入我的模型而不使用这种方法?或者我应该更改我的视图文件名,例如通过添加后缀_views(例如blogs.views.blogs_views.py:)来完全避免问题?
| 归档时间: |
|
| 查看次数: |
1548 次 |
| 最近记录: |