【问题标题】:Did new copied files break the import rules?新复制的文件是否违反了导入规则?
【发布时间】:2026-02-19 22:45:01
【问题描述】:

我使用 django 1.4.2 创建了一个 django 项目。此项目中有一个“应用程序”(adsite)。它有效。但是,当我将一些 'py' 文件复制到 'app' 文件夹中时,views.py 中出现了 No module named models 错误。和Parent module adsite.adsiteviews.mainhanlder does not exist. 我应该在“应用程序”中将新文件注册到__init__ 吗?新的已处理文件是否违反了import 规则?

views.py

from django.http import HttpResponse
from django.template import Context, loader    
from adsite.models import UserInfo

def showusers(request):
    userlist = UserInfo.objects.all()
    c = Context({
        'userlist':userlist,
    })
    t = loader.get_template('users.html')

    return HttpResponse(t.render(c))

复制的文件: adsiteviews.py

class mainhanlder(TemplateView)
    def get(self):
    """ """        
    variables = {
                'user': self.get_current_user(),
                'mchosts' : MCHOSTS, 
                'servers' : servers}

    index_templ = tmpl_lookup.get_template("index.html")
    body = index_templ.render(**variables)
    self.write(body)

urls.py

urlpatterns = patterns('',
    # Examples:
    url(r'^$', 'adsite.adsiteviews.mainhandler.as_View()'),
    url(r'^users/$', 'adsite.views.showusers'),

我对这个问题没有任何线索。任何建议,将不胜感激。谢谢你的时间。

【问题讨论】:

  • adsiteviews.py 是从使用 tornado 开发的应用程序修改而来的。现在我想修改它以使用 django,也许是 django 中基于类的视图。

标签: python django django-views django-class-based-views


【解决方案1】:

首先,你的 urlconf 完全错误;您不能像调用基于函数的视图那样调用基于类的视图。具体来说,您的 urls.py 应如下所示:

from adsite.adsiteviews import mainhandler

urlpatterns = patterns('',
    # Examples:
    url(r'^$', mainhandler.as_View()),
    url(r'^users/$', 'adsite.views.showusers'),

其次,错误No module named models 可能意味着:您需要在adsite 目录中有名为models.py 的文件,并且它应该包含UserInfo 模型定义。我不知道你为什么没有models.py,因为它通常是默认由startapp创建的。

【讨论】: