Django开发:为何无法从views.py中导入generic模块?
Django导入通用视图错误的解决办法
错误原因
你写的from django.views.generic import generic是错误的——django.views.generic本身就是顶层模块,模块内部并没有名为generic的可导入对象,所以会触发ImportError。
两种正确的写法
写法1:导入整个generic模块并设置别名
如果你想通过generic.ListView这种方式调用视图类,应该直接导入整个模块并设置别名,而非尝试导入不存在的generic对象:
import django.views.generic as generic class LeadListView(generic.ListView): template_name = "leads/lead_list.html" queryset = Lead.objects.all() content_object_name = "leads"
写法2:批量导入所需视图类
你之前用的单独导入方式可以优化成更清晰的批量写法,避免重复:
from django.views.generic import ( ListView, CreateView, DetailView, # 按需添加其他需要的视图类,比如UpdateView、DeleteView等 ) class LeadListView(ListView): template_name = "leads/lead_list.html" queryset = Lead.objects.all() content_object_name = "leads"
关于top_level_module=True
你查到的这个参数和当前问题无关,它是Python包打包时setup.py里的配置项,用于声明顶层模块,完全不适用于解决Django视图的导入错误,不用理会。
内容的提问来源于stack exchange,提问作者Felix Songwe
相关产品推荐
相关产品推荐

