Skip to main content
 首页 » 编程设计

python之无法导入名称(模型)

2025年05月04日12kenshinobiy

我收到上面的错误消息,更具体地说是“ImportError at/ops_page/create”“cannot import name ops_page”。基本上,我有一个名为“ops_page”的应用程序,我似乎无法获得新创建的 url“/ops_page/create”,它应该包含与“ops_page”中的模型对应的表单。我看过类似的线程,并尝试删除 ops_page 应用程序和根目录中的 .pyc 文件,以及删除 sqlite 数据库并重新同步/迁移。知道这里可能有什么问题吗?

我的基本 urls.py:

urlpatterns = patterns('', 
    . 
    . 
    url(r'^ops_page/', include('ops_page.urls')), 
    . 
    . 
) 

我的 ops_page urls.py:

urlpatterns = patterns('', 
    url(r'^create/$', 'ops_page.views.create'), 
) 

我的 ops_page models.py:

from django.db import models 
from django.conf import settings 
import os.path 
 
 
 
class OpsPageInfo(models.Model): 
        campaign_name = models.CharField(max_length=100, unique=True, blank=True) 
        campaign_pic = models.ImageField(upload_to="images/opspage_pics") 
        description_header = models.CharField(max_length=100, blank=True) 
        campaign_description = models.CharField(max_length=600, blank=True) 
        goal = models.CharField(max_length=100, blank=True) 
        perk_header1 = models.CharField(max_length=100, blank=True) 
        perk_description1 = models.CharField(max_length=600, blank=True) 
 
 
        def __unicode__(self): 
                return self.campaign_name 

我的 ops_page views.py:

from django.shortcuts import render_to_response 
from ops_page.models import OpsPageInfo 
from django.http import HttpResponse 
from forms import OpsPageForm 
from django.http import HttpResponseRedirect 
 
 
def create(request): 
    if request.POST: 
        form = OpsPageForm(request.POST) 
        if form.is_valid(): 
            form.save() 
 
 
            return HttpResponseRedirect('/artist_donation/') 
 
    else: 
        form = OpsPageForm() 
 
    args = {} 
    args.update(csrf(request)) 
 
    args['form'] = form 
 
    return render_to_response('create_opspage.html', args) 

我的 ops_page forms.py:

from django import forms 
from models import ops_page 
 
 
class OpsPageForm(forms.ModelForm): 
 
    class Meta: 
        model = ops_page 

create_opspage.html 表单:

            {% block content %} 
            <form action="/ops_page/create/" method="post">{% csrf_token %} 
                <ul> 
                {{ form.as_ul }} 
                </ul> 
 
                <input type="submit" name="submit" value="Create Ops Page"> 
            </form> 
            {% endblock %} 

最后,我的错误回溯:

Environment: 
 
 
Request Method: GET 
Request URL: http://127.0.0.1:8000/ops_page/create 
 
Django Version: 1.7.5 
Python Version: 2.7.5 
Installed Applications: 
('django.contrib.admin', 
 'django.contrib.auth', 
 'django.contrib.contenttypes', 
 'django.contrib.sessions', 
 'django.contrib.messages', 
 'django.contrib.staticfiles', 
 'django.contrib.humanize', 
 'band', 
 'friend', 
 'registration', 
 'music', 
 'audiofield', 
 'user_profile', 
 'social.apps.django_app.default', 
 'directory', 
 'youtube_urls', 
 'ops_page') 
Installed Middleware: 
('django.contrib.sessions.middleware.SessionMiddleware', 
 'django.middleware.common.CommonMiddleware', 
 'django.middleware.csrf.CsrfViewMiddleware', 
 'django.contrib.auth.middleware.AuthenticationMiddleware', 
 'django.contrib.auth.middleware.SessionAuthenticationMiddleware', 
 'django.contrib.messages.middleware.MessageMiddleware', 
 'django.middleware.clickjacking.XFrameOptionsMiddleware', 
 'audiofield.middleware.threadlocals.ThreadLocals') 
 
 
Traceback: 
File "/Library/Python/2.7/site-packages/Django-1.7.5-py2.7.egg/django/core/handlers/base.py" in get_response 
  87.                 response = middleware_method(request) 
File "/Library/Python/2.7/site-packages/Django-1.7.5-py2.7.egg/django/middleware/common.py" in process_request 
  73.                     urlresolvers.is_valid_path("%s/" % request.path_info, urlconf)): 
File "/Library/Python/2.7/site-packages/Django-1.7.5-py2.7.egg/django/core/urlresolvers.py" in is_valid_path 
  619.         resolve(path, urlconf) 
File "/Library/Python/2.7/site-packages/Django-1.7.5-py2.7.egg/django/core/urlresolvers.py" in resolve 
  494.     return get_resolver(urlconf).resolve(path) 
File "/Library/Python/2.7/site-packages/Django-1.7.5-py2.7.egg/django/core/urlresolvers.py" in resolve 
  345.                     sub_match = pattern.resolve(new_path) 
File "/Library/Python/2.7/site-packages/Django-1.7.5-py2.7.egg/django/core/urlresolvers.py" in resolve 
  345.                     sub_match = pattern.resolve(new_path) 
File "/Library/Python/2.7/site-packages/Django-1.7.5-py2.7.egg/django/core/urlresolvers.py" in resolve 
  224.             return ResolverMatch(self.callback, args, kwargs, self.name) 
File "/Library/Python/2.7/site-packages/Django-1.7.5-py2.7.egg/django/core/urlresolvers.py" in callback 
  231.         self._callback = get_callable(self._callback_str) 
File "/Library/Python/2.7/site-packages/Django-1.7.5-py2.7.egg/django/utils/lru_cache.py" in wrapper 
  101.                     result = user_function(*args, **kwds) 
File "/Library/Python/2.7/site-packages/Django-1.7.5-py2.7.egg/django/core/urlresolvers.py" in get_callable 
  97.             mod = import_module(mod_name) 
File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/importlib/__init__.py" in import_module 
  37.     __import__(name) 
File "/Users/sethjones/Desktop/atmos_v6/ops_page/views.py" in <module> 
  4. from forms import OpsPageForm 
File "/Users/sethjones/Desktop/atmos_v6/ops_page/forms.py" in <module> 
  2. from models import ops_page 
 
Exception Type: ImportError at /ops_page/create 
Exception Value: cannot import name ops_page 

我是 django 的新手,所以这可能是我的语法错误或者我没有正确映射。任何帮助将不胜感激。谢谢。

请您参考如下方法:

重要的行:

File "/Users/sethjones/Desktop/atmos_v6/ops_page/forms.py" in <module> 
  2. from models import ops_page 

它告诉您导入不正确。现在,如果您检查 forms.py 文件,您会看到 from models import ops_page 这行确实是错误的。它应该是 from models import OpsPageInfo。

此外,您需要将表单模型属性更改为 model = OpsPageInfo 而不是 model = ops_page