如何使用Django Mongoengin Rest框架编写REST API

问题描述 投票:0回答:1

尝试访问API时出现导入错误。 任何人都可以帮助我解决此错误。 我将mongoengine与django结合使用。 我的代码快照model.py

from django.db import models

# Create your models here.
from djangotoolbox.fields import ListField
class Post(models.Model):
    title = models.CharField(max_length=100)
    text = models.TextField()
    tags = ListField()
    comments = ListField()

序列化器

from rest_framework_mongoengine.serializers import DocumentSerializer
from models import Post
class PostSerializer(DocumentSerializer):
    class Meta:
        model = Post
from rest_framework_mongoengine.generics import ListCreateAPIView
class PostList(ListCreateAPIView):
    queryset = Post.objects.all()
    serializer_class = PostSerializer

urls.py

urlpatterns = patterns('',
    # Examples:
    # url(r'^$', 'mysite.views.home', name='home'),
    #url(r'^blog/', include('blog.urls')),
    url(r'^blog/$', views.BlogList.as_view()),
    url(r'^admin/', include(admin.site.urls)),
)

settings.py

"""
Django settings for mysite project.

For more information on this file, see
https://docs.djangoproject.com/en/1.6/topics/settings/

For the full list of settings and their values, see
https://docs.djangoproject.com/en/1.6/ref/settings/
"""

# Build paths inside the project like this: os.path.join(BASE_DIR, ...)
import os
BASE_DIR = os.path.dirname(os.path.dirname(__file__))


# Quick-start development settings - unsuitable for production
# See https://docs.djangoproject.com/en/1.6/howto/deployment/checklist/

# SECURITY WARNING: keep the secret key used in production secret!
SECRET_KEY = '#9c**o=!!%ge=7_fqb*42t$=d5w(s514&#bv-n!41m&&54eh2!'

# SECURITY WARNING: don't run with debug turned on in production!
DEBUG = True

TEMPLATE_DEBUG = True

ALLOWED_HOSTS = []


# Application definition

INSTALLED_APPS = (
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',
    'rest_framework_mongoengine',
    'blog',
)

MIDDLEWARE_CLASSES = (
    'django.contrib.sessions.middleware.SessionMiddleware',
    'django.middleware.common.CommonMiddleware',
    'django.middleware.csrf.CsrfViewMiddleware',
    'django.contrib.auth.middleware.AuthenticationMiddleware',
    'django.contrib.messages.middleware.MessageMiddleware',
    'django.middleware.clickjacking.XFrameOptionsMiddleware',
)

ROOT_URLCONF = 'mysite.urls'

WSGI_APPLICATION = 'mysite.wsgi.application'


# Database
# https://docs.djangoproject.com/en/1.6/ref/settings/#databases

DATABASES = {
    'default': {
        'ENGINE': 'django_mongodb_engine',
        'NAME': 'mysite_db',
    }
}

# Internationalization
# https://docs.djangoproject.com/en/1.6/topics/i18n/

LANGUAGE_CODE = 'en-us'

TIME_ZONE = 'UTC'

USE_I18N = True

USE_L10N = True

USE_TZ = True


# Static files (CSS, JavaScript, Images)
# https://docs.djangoproject.com/en/1.6/howto/static-files/

STATIC_URL = '/static/'

导入错误

Environment:


Request Method: GET
Request URL: http://localhost:8000/

Django Version: 1.6.11
Python Version: 2.7.6
Installed Applications:
('django_mongodb_engine',
 'django.contrib.admin',
 'django.contrib.auth',
 'django.contrib.contenttypes',
 'django.contrib.sessions',
 'django.contrib.messages',
 'django.contrib.staticfiles',
 'rest_framework_mongoengine',
 'blog')
Installed Middleware:
('django.contrib.sessions.middleware.SessionMiddleware',
 'django.middleware.common.CommonMiddleware',
 'django.middleware.csrf.CsrfViewMiddleware',
 'django.contrib.auth.middleware.AuthenticationMiddleware',
 'django.contrib.messages.middleware.MessageMiddleware',
 'django.middleware.clickjacking.XFrameOptionsMiddleware')


Traceback:
File "/home/ashish/mongo_django/demo/local/lib/python2.7/site-packages/django/core/handlers/base.py" in get_response
  99.                 resolver_match = resolver.resolve(request.path_info)
File "/home/ashish/mongo_django/demo/local/lib/python2.7/site-packages/django/core/urlresolvers.py" in resolve
  337.             for pattern in self.url_patterns:
File "/home/ashish/mongo_django/demo/local/lib/python2.7/site-packages/django/core/urlresolvers.py" in url_patterns
  365.         patterns = getattr(self.urlconf_module, "urlpatterns", self.urlconf_module)
File "/home/ashish/mongo_django/demo/local/lib/python2.7/site-packages/django/core/urlresolvers.py" in urlconf_module
  360.             self._urlconf_module = import_module(self.urlconf_name)
File "/home/ashish/mongo_django/demo/local/lib/python2.7/site-packages/django/utils/importlib.py" in import_module
  40.         __import__(name)
File "/home/ashish/mongo_django/mysite/mysite/urls.py" in <module>
  5. from blog.serilizer import PostList
File "/home/ashish/mongo_django/mysite/blog/serilizer.py" in <module>
  6. from rest_framework_mongoengine.generics import ListCreateAPIView
File "/home/ashish/mongo_django/demo/local/lib/python2.7/site-packages/rest_framework_mongoengine/generics.py" in <module>
  4. from mongoengine.django.shortcuts import get_document_or_404

Exception Type: ImportError at /
Exception Value: No module named django.shortcuts
python django mongodb rest mongoengine
1个回答
2
投票

Django支持已从MongoEngine 0.10.0( 发行说明 )中删除 。 这意味着它将无法与rest_framework_mongoengine一起rest_framework_mongoengine

您可以尝试安装MongoEngine 0.9.0。

© www.soinside.com 2019 - 2024. All rights reserved.