REST Framework + MongoDB

最近,我开始使用Mongo DB作为我的一个项目的数据库。

我按照不同网站上的说明配置Django使用Mongo作为数据库。但是,说明并不清楚。

所以,在这篇文章中,我想列出我为安装所需的软件包,配置Django,创建一个简单的应用程序以及验证操作以创建文档和列出所有文档所遵循的步骤

我的环境是使用Python 3.6.5的Ubuntu 16.04

安装所需的包
apt install python3-pip 
pip3 install django == 1.11 
pip3 install djangorestframework 
pip3 install django-rest-framework-mongoengine 
pip3 install pymongo 
pip3 install mongoengine
创建一个Django项目和应用程序
django-admin startproject mysite
cd mysite
python manage.py startapp polls
配置项目设置

mysite/settings.py

INSTALLED_APPS = [
    'rest_framework',
    'polls.apps.PollsConfig',
    #default apps
]

# Set database settings to None
DATABASES = {
    'default': {
        'ENGINE': '',
    }
}

# Configure Mongo as database. Replace below values as required
from mongoengine import connect

MONGO_DATABASE_NAME = 'testdb'
MONGO_HOST = '127.0.0.1'
MONGO_PORT = 27017
connect(MONGO_DATABASE_NAME, host=MONGO_HOST, port=MONGO_PORT)
配置项目url
from django.conf.urls import url, include

urlpatterns = [
    url(r'^polls/', include('polls.urls')),
]
配置应用模型

polls/models.py

from mongoengine import Document, fields

class Poll(Document):
    poll_name = fields.StringField(required=True)
    poll_votes = fields.IntegerField(required=True)
配置应用序列化程序

polls/serializers.py

from rest_framework_mongoengine import serializers

from .models import Poll

class PollSerializer(serializers.DocumentSerializer):
    class Meta:
        model = Poll
        fields = '__all__'
配置应用视图

polls/views.py

from rest_framework import status
from rest_framework.views import APIView
from rest_framework.response import Response

from .models import Poll
from .serializers import PollSerializer

class PollView(APIView):

    def get(self, request):
        serializer = PollSerializer(Poll.objects.all(), many=True)
        response = {"polls": serializer.data}
        return Response(response, status=status.HTTP_200_OK)

    def post(self, request, format=None):
        data = request.data
        serializer = PollSerializer(data=data)
        if serializer.is_valid():
            poll = Poll(**data)
            poll.save()
            response = serializer.data
            return Response(response, status=status.HTTP_200_OK)
配置应用url

polls/urls.py

from django.conf.urls import url

from . import views

urlpatterns = [
    url(r'^$', views.PollView.as_view()),
]
启动Django开发服务器
python manage.py runserver
验证2个API以创建轮询并列出所有民意调查
curl -H 'Accept: application/json; indent=4' http://127.0.0.1:8000/polls/
curl -H "Content-Type: application/json" -X POST -d '{"poll_name": "Elections","poll_votes": 100}' http://127.0.0.1:8000/polls/
注意:
  • 我们不需要像其他类型的数据库一样同步表;
  • 在MongoDB中创建的集合的名称将是模型类的小写名称(上例中的轮询。因此,该集合将命名为poll)。
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 215,539评论 6 497
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 91,911评论 3 391
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 161,337评论 0 351
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 57,723评论 1 290
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 66,795评论 6 388
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,762评论 1 294
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,742评论 3 416
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,508评论 0 271
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,954评论 1 308
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,247评论 2 331
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,404评论 1 345
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,104评论 5 340
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,736评论 3 324
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,352评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,557评论 1 268
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,371评论 2 368
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,292评论 2 352

推荐阅读更多精彩内容