文章/ api / article上的ImportError:无法导入名称ArticleResource

时间:2015-02-10 14:55:45

标签: python django tastypie

我试图创建一个Django网站,每次我在本地主机上运行/ articles / api / article页面时:我得到了这个回溯:

Environment:


Request Method: GET
Request URL: http://127.0.0.1:8000/articles/api/article

Django Version: 1.7.4
Python Version: 2.7.8
Installed Applications:
('django.contrib.admin',
 'django.contrib.auth',
 'django.contrib.contenttypes',
 'django.contrib.sessions',
 'django.contrib.sites',
 'django.contrib.messages',
 'django.contrib.staticfiles',
 'django.contrib.comments',
 'article',
 'tastypie')

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')


Traceback:
File "/home/deanna/django-deanna/local/lib/python2.7/site-packages/Django-1.7.4-py2.7.egg/django/core/handlers/base.py" in get_response
  87.                 response = middleware_method(request)
File "/home/deanna/django-deanna/local/lib/python2.7/site-packages/Django-1.7.4-py2.7.egg/django/middleware/common.py" in process_request
  72.             if (not urlresolvers.is_valid_path(request.path_info, urlconf) and
File "/home/deanna/django-deanna/local/lib/python2.7/site-packages/Django-1.7.4-py2.7.egg/django/core/urlresolvers.py" in is_valid_path
  619.         resolve(path, urlconf)
File "/home/deanna/django-deanna/local/lib/python2.7/site-packages/Django-1.7.4-py2.7.egg/django/core/urlresolvers.py" in resolve
  494.     return get_resolver(urlconf).resolve(path)
File "/home/deanna/django-deanna/local/lib/python2.7/site-packages/Django-1.7.4-py2.7.egg/django/core/urlresolvers.py" in resolve
  343.             for pattern in self.url_patterns:
File "/home/deanna/django-deanna/local/lib/python2.7/site-packages/Django-1.7.4-py2.7.egg/django/core/urlresolvers.py" in url_patterns
  372.         patterns = getattr(self.urlconf_module, "urlpatterns", self.urlconf_module)
File "/home/deanna/django-deanna/local/lib/python2.7/site-packages/Django-1.7.4-py2.7.egg/django/core/urlresolvers.py" in urlconf_module
  366.             self._urlconf_module = import_module(self.urlconf_name)
File "/usr/lib/python2.7/importlib/__init__.py" in import_module
  37.     __import__(name)
File "/home/deanna/django_test/django_test/urls.py" in <module>
  3. from tastypie.api import ArticleResource

Exception Type: ImportError at /articles/api/article
Exception Value: cannot import name ArticleResource

这是我的urls.py文件,位于django_test / django_test目录下:

from django.conf.urls import patterns, include, url
from django.contrib import admin
from tastypie.api import ArticleResource

article_resource = ArticleResource()

urlpatterns = patterns('',
                   url(r'^admin/', include(admin.site.urls)),
                   url(r'^accounts/login/$', 'django_test.views.login'),
                   url(r'^accounts/auth/$', 'django_test.views.auth_view'),
                   url(r'^accounts/loggedin/$', 'django_test.views.loggedin'),
                   url(r'^accounts/invalid/$', 'django_test.views.invalid_login'),
                   url(r'^accounts/logout/$', 'django_test.views.logout'),
                   url(r'^accounts/register/$', 'django_test.views.register_user'),
                   url(r'^accounts/register_success/$', 'django_test.views.register_success'),
                   url(r'^articles/all/$', 'article.views.articles'),
                   url(r'^articles/create/$', 'article.views.create'),
                   url(r'^articles/get/(?P<article_id>\d+)/$', 'article.views.article'),
                   url(r'^articles/like/(?P<article_id>\d+)/$', 'article.views.like_article'),
                   url(r'^articles/add_comment/(?P<article_id>\d+)/$', 'article.views.add_comment'),
                   url(r'^articles/search/', 'article.views.search_titles'),
                   url(r'^articles/api/article', include(article_resource.urls)),

) 

这是我的api.py文件,它也位于django_test / django_test目录中:

from tastypie.resources import ModelResource
from tastypie.constants import ALL
from models import Article 

class ArticleResource(ModelResource):
    class Meta:
        queryset = Article.objects.all()
        resource_name = 'article'

我尝试将api.py文件中的第三个import语句分开并将其放在一个单独的文件中,但我仍然遇到同样的错误,所以这不是问题所在。我同步了db并完成了所有需要的迁移,但我仍然遇到了同样的错误。我使用的TastyPie版本是0.12.1。

我很感激我能得到的任何帮助,因为我已经坚持这个错误了几天。谢谢。

编辑:我做了一些更改,现在我在/ articles / api / article&#34;找不到&#34;页面即使我在我的urls.py文件中有这个消息。这是追溯:

Using the URLconf defined in django_test.urls, Django tried these URL patterns, in this order:

1. ^admin/
2. ^accounts/login/$
3. ^accounts/auth/$
4. ^accounts/loggedin/$
5. ^accounts/invalid/$
6. ^accounts/logout/$
7. ^accounts/register/$
8. ^accounts/register_success/$
9. ^articles/all/$
10. ^articles/create/$
11. ^articles/get/(?P<article_id>\d+)/$
12. ^articles/like/(?P<article_id>\d+)/$
13. ^articles/add_comment/(?P<article_id>\d+)/$
14. ^articles/search/
15. ^articles/api/article ^(?P<resource_name>article)/$ [name='api_dispatch_list']
16. ^articles/api/article ^(?P<resource_name>article)/schema/$ [name='api_get_schema']
17. ^articles/api/article ^(?P<resource_name>article)/set/(?P<pk_list>.*?)/$ [name='api_get_multiple']
18. ^articles/api/article ^(?P<resource_name>article)/(?P<pk>.*?)/$ [name='api_dispatch_detail']

The current URL, articles/api/article, didn't match any of these.

这个追溯的数字15-18并不是我在urls.py文件中写的确切语句,所以我很困惑。

2 个答案:

答案 0 :(得分:1)

您需要更改

from tastypie.api import ArticleResource

这样的东西
from django_test.resources import ArticleResource
from django_test.api import ArticleResource

甚至可能

from .api ArticleResource

答案 1 :(得分:0)

urls.py文件中,更改:

from tastypie.api import ArticleResource

from django_test.api import ArticleResource

并在我们的api.py中,更改:

from models import Article

from article.models import Article