2017-04-05 123 views
0

我試圖創建使用AWS EC2實例錯誤與MongoDB的連接Django的:導入錯誤:沒有模塊名爲django.auth

,並在文件models.py Django和MongoDB的博客,我提出以下修改

from datetime import datetime 
from mongoengine import * 
from mongoengine.django.auth import User 
from django.core.urlresolvers import reverse 

class Post(Document): 
    user = ReferenceField(User, reverse_delete_rule=CASCADE) 
    title = StringField(max_length=200, required=True) 
    text = StringField(required=True) 
    text_length = IntField() 
    date_modified = DateTimeField(default=datetime.now) 
    is_published = BooleanField() 

from django.core.urlresolvers import reverse 

class Post(Document): 
    user = ReferenceField(User, reverse_delete_rule=CASCADE) 
    title = StringField(max_length=200, required=True) 
    text = StringField(required=True) 
    text_length = IntField() 
    date_modified = DateTimeField(default=datetime.now) 
    is_published = BooleanField() 

    def __unicode__(self): 
     return self.title 

    def save(self, *args, **kwargs): 
     self.text_length = len(self.text) 
     return super(Post, self).save(*args, **kwargs) 

    def get_absolute_url(self): 
     return reverse('detail', args=[self.id]) 

    def get_edit_url(self): 
     return reverse('update', args=[self.id]) 

    def get_delete_url(self): 
     return reverse('delete', args=[self.id]) 

而且,我得到這個錯誤

Traceback (most recent call last): 
     File "models.py", line 7, in <module> 
     from mongoengine.django.auth import User 
ImportError: No module named django.auth 

而且,在settings.py文件,我想提出以下更改

import os 
from mongoengine import * 
PROJECT_ROOT = os.path.abspath(os.path.dirname(__file__)) 
# SECURITY WARNING: don't run with debug turned on in production! 
DEBUG = True 

TEMPLATE_DEBUG = True 

ALLOWED_HOSTS = ['54.149.63.203', 'localhost', '127.0.0.1'] 


# Application definition 

INSTALLED_APPS = (
    'django.contrib.admin', 
    'django.contrib.auth', 
    'django.contrib.contenttypes', 
    'django.contrib.sessions', 
    'django.contrib.messages', 
    'django.contrib.staticfiles', 
    'django.contrib.sites', 
'LJblog', 
'django_extensions', 
'mongoengine.django.mongo_auth', 

) 

MIDDLEWARE_CLASSES = (
    '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', 
    'django.middleware.security.SecurityMiddleware', 
) 

ROOT_URLCONF = 'LJ.urls' 

TEMPLATES = [ 
    { 
     'BACKEND': 'django.template.backends.django.DjangoTemplates', 
     'DIRS': [], 
     'APP_DIRS': True, 
     'OPTIONS': { 
      'context_processors': [ 
'django.template.context_processors.debug', 
       'django.template.context_processors.request', 
       'django.contrib.auth.context_processors.auth', 
       'django.contrib.messages.context_processors.messages', 
      ], 
     }, 
    }, 
] 

WSGI_APPLICATION = 'LJ.wsgi.application' 




DATABASES = { 
'default': { 
     'ENGINE': 'django.db.backends.dummy', 
     'NAME': '', 
     'USER': '', 
'PASSWORD': '', 
'HOST': '55.181.26.33', //mongodb ip address 
'PORT': '27017', 
    } 
} 



LANGUAGE_CODE = 'en-us' 

TIME_ZONE = 'UTC' 

USE_I18N = True 
USE_L10N = True 

USE_TZ = True 


MEDIA_ROOT = os.path.join(PROJECT_ROOT, '..', 'media') 
MEDIA_URL = '/media/' 
STATIC_ROOT = os.path.join(PROJECT_ROOT, '..', 'static') 
STATIC_URL = '/static/' 

STATICFILES_DIRS = (
     os.path.join(PROJECT_ROOT, 'static'), 
) 


TEMPLATE = (
os.path.join(PROJECT_ROOT, 'templates'), 
) 

AUTHENTICATION_BACKENDS = (
    'mongoengine.django.auth.MongoEngineBackend', 
) 
SESSION_ENGINE = 'mongoengine.django.sessions' 

AUTH_USER_MODEL = 'mongo_auth.MongoUser' 
MONGOENGINE_USER_DOCUMENT = 'mongoengine.django.auth.User' 
MONGO_DATABASE_NAME = 'LJ_blog' 
from mongoengine import connect 
connect(MONGO_DATABASE_NAME) 

那麼,我該如何解決導入錯誤?

+0

你運行過syn​​cdb命令嗎? – rkatkam

+0

@rkatkam,我想執行syncdb已棄用,並通過遷移所取代,所以我沒有執行syncdb – pavikirthi

回答

1

在0.10.0中,從MongoEngine中刪除了Django支持。您可能能夠獲得早期版本,但它可能不支持最新版本的Django。

隨着mongoengine 0.10我們可以看到,

/usr/lib/python2.7/site-packages/mongoengine/

不會有Django的包在裏面。 安裝mongoengine 0.9使用

sudo pip install mongoengine==0.9

和django的包(支持或擴展)將可用。

+0

的作品使用和沿我們要做這個點子卸載pymongo PIP安裝pymongo == 2.8 否則,有一些更錯誤,你有沒有想法如何處理這個沒有MongoEngine? – pavikirthi

+0

其實pymongo也有最新版本的pymongo版本問題,所以我們需要將它降級到2.8我認爲不確定。 –

相關問題