在Django的官方文档中,没有介绍mongodb数据库的任何使用方法,mongodb也不是django官方推荐使用的数据库。以下是django官方列出的内建数据库。官方地址:
django settings database
The database backend to use. The built-in database backends are:
'django.db.backends.postgresql'
'django.db.backends.mysql'
'django.db.backends.sqlite3'
'django.db.backends.oracle'
而且在django中配置mongodb时会遇到很多问题,网上有好几种配置mongodb的方式,但真正配置的时候还是会遇到很多问题,而且也很不详细,博主在这个过程中被折磨的确实很惨,后来历经万难,总算成功配置好mongodb的数据库,但坑爹的是django居然没有支持mongodb的admin管理模块,当然这肯定没法忍,对不对?所以博主又开始折腾,终于后来发现了一个叫做
django-mongonaut==0.2.20的包。他是在Django和mongodb内省的接口包. 他重写了django的admin模块,但仅限于mongodb的使用。具体可参照官方文档:
django-mongonaut
另外,在本文中我指定了各个模块的安装版本,希望大家能够按照本文的版本依次安装,不然可能会出现很多问题,因为各个包之间的相互支持的版本不尽相同。如果版本不对应,可能会导致配置失败。当然,对于版本问题感兴趣的也可以自己阅读相关文档。mongoengine的官方文档:mongoengine
mongoengine的更新说明:mongoengine更新说明
本文中mongoengine安装0.9.0 是因为在下一版本中将mongoengine对django的支持独立出来,变成了一个新的模块django-mongoengine
也就是说0.9.0以后的mongoengine不支持django使用。
ok,接下来进入正题。
windows用户直接在官网下载安装即可,下载地址:mongodb download
关于mongodb的使用,推荐去看mongodb教程
# 添加ubuntu软件仓库的认证。
1.sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv 7F0CEB10
# 添加mongodb软件源
2.echo "deb http://repo.mongodb.org/apt/debian wheezy/mongodb-org/3.0 main" | sudo tee /etc/apt/sources.list.d/mongodb-org-3.0.list
# 更新源
3.sudo apt-get update
# 安装mongodb数据库
4.sudo apt-get install -y mongod
本文推荐用virtualenv创建虚拟环境来管理开发环境,因为这样你可以让自己的开发环境变的干净,整洁。virtualenv的官方文档virtualenv
关于virtualenv简单的使用请看过来。
windows system
打开doc输入窗口:
1.安装virtualenv
pip install virtualenv
virtualenv --version #查看virtualenv版本
2.在环境目录安装开发环境
3.cd 工作目录
4.virtualenv --python=python2.7 [VENV name] #
5.激活虚拟环境
[VENV name]\Scripts\bin\activate
6.安装其他的依赖包
pip install django==1.6.2
pip install pymongo==2.8
pip install mongoengine==0.9.0
pip install django-mongonaut
Linux system
打开Linux终端
1.安装virtualenv
pip install virtualenv
virtualenv --version #查看virtualenv版本
2.在环境目录安装开发环境
3.cd 工作目录
4.virtualenv --python=python2.7 [VENV name] #
5.激活虚拟环境
source [VENV name]\bin\activate
6.安装其他的依赖包
pip install django==1.6.2
pip install pymongo==2.8
pip install mongoengine==0.9.0
pip install django-mongonaut
此步骤,大家可以参考django的用法,后面我会根据此文档创建项目并放到github上,感兴趣的可以关注。
settings中修改配置
在settings中添加以下标记字段
INSTALLED_APPS = (
'mongonaut', #添加此字段
'django.contrib.admin',
'django.contrib.auth',
'mongoengine.django.mongo_auth', #添加此字段
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
'blogapp',
)
### 添加以下字段###
from mongoengine import *
DBNAME = 'blog’
AUTHENTICATION_BACKENDS = (
'mongoengine.django.auth.MongoEngineBackend',
)
SESSION_ENGINE = 'mongoengine.django.sessions'
### 数据库做以下配置 ###
DATABASES = {
'default': {
'ENGINE':'django.db.backends.sqlite3',
'NAME': os.path.join(BASE_DIR, 'db.sqlite3'),
'USER': '',
'PASSWORD': '',
'HOST': '',
'PORT': '',
}
}
AUTH_USER_MODE= 'mongo_auth.MongoUser'
urls中修改配置
### urls.py 中需要添加的字段 ###
from django.conf.urls import patterns, include, url
import mongonaut
from mongonaut import urls
from django.contrib import admin
from blogapp.views import *
admin.autodiscover()
urlpatterns = patterns('',
# Example
url(r'^mongonaut/', include('mongonaut.urls')),
url(r'^admin/', include(admin.site.urls)),
models中配置
###models.py需要引入的模块###
from django.db import models
from mongoengine import *
from blog.settings import DBNAME
connect(DBNAME)
class Employee(Document):
name = StringField(max_length=50)
age = IntField(required=False)
新建mongoadmin.py的文件
###新建一个mongoadmin.py的文件###
# import the MongoAdmin base class
from mongonaut.sites import MongoAdmin
###import your custom models###
from blogapp.models import Employee
# instantiate the MongoAdmin class
# Then attach the mongoadmin to your model
Employee.mongoadmin = MongoAdmin()
一定要记得先用admin账号登陆,然后才能在后面用mongonaut登陆,否则登陆不了后台。