Python Django Mongodb

来源:互联网 发布:阿里云邮箱地址前缀 编辑:程序博客网 时间:2024/06/07 02:54

Django 使用Mongodb

一、安装mongoengine

二、修改setting.py 添加mongoengine connect并且修改 DataBase

DATABASES = {

    'default': {

        'ENGINE':'django.db.backends.dummy'

    }

}

connect('db', host='127.0.0.1')

  三、添加model

1、正常的model继承mongoengine Document就可以了

2、可以继承DynamicDocument

3、可以继承EmbeddedDocument,用来在document中嵌入document

例如:

class User(Document):

    name = StringField(max_length=100, required=True)

    password = StringField(max_length=50)

    phone = StringField(max_length=50)

    email=EmailField(max_length=100)

    sex=StringField(max_length=10)

    remark=StringField(max_length=500)

    birthday=DateTimeField(default=datetime.datetime.now)

    createtime = DateTimeField(default=datetime.datetime.now)

    def toDict(self):

        return self._data;

四、查询

def login(request):    print(request.method)    if request.method == 'POST':        name = request.POST.get('username', '')        password = md5(request.POST.get('passwd', ''))        user = User.objects(name=name, password=password).first()--查询        if user is not None:            strs = user.toDict()--把查询结果序列号成dict            cache.set("userid", user.id)--缓存到内存中(redis)            cache.set('userInfo', strs)            resp = {'accessGranted': True, 'errorcode': 100, 'detail': 'Get success'}            return HttpResponse(json.dumps(resp), content_type="application/json")    userId = cache.get('userid')    userInfo = cache.get('userInfo')    if userId is not None:        print(type(userInfo))        return HttpResponseRedirect("/index")    return render(request, 'login.html')