django 개발을 위한 mongodb 구성 및 사용
이 글의 내용은 Django 개발에서 mongodb의 구성과 사용에 관한 것입니다. 필요한 친구들이 참고할 수 있기를 바랍니다.
오늘은 django 프로젝트에서 mongodb를 사용하는 방법을 정리했습니다. 환경은 ubuntu18.04, django2.0.5, drf3.9, mongoengine0.16
1단계: settings.py에서 mongodb와 mysql을 구성합니다. , 다음과 같이 구성합니다(mysql과 mongodb를 동시에 사용할 수 있음):
DATABASES = { 'default': { 'ENGINE': 'django.db.backends.mysql', # 数据库引擎 'NAME': 'django_test2', # 你要存储数据的库名,事先要创建之 'USER': 'root', # 数据库用户名 'PASSWORD': 'wyzane', # 密码 'HOST': 'localhost', # 主机 'PORT': '3306', # 数据库使用的端口 }, 'mongotest': { 'ENGINE': None, } } import mongoengine # 连接mongodb中数据库名称为mongotest5的数据库 conn = mongoengine.connect("mongotest")
2단계: mongodb에 데이터 삽입
1. json 유형 데이터 삽입
models.py: import mongoengine class StudentModel(mongoengine.Document): name = mongoengine.StringField(max_length=32) age = mongoengine.IntField() password = mongoengine.StringField(max_length=32) views.py: from rest_framework.views import APIView class FirstMongoView(APIView): def post(self, request): name = request.data["name"] age = request.data["age"] password = request.data["password"] StudentModel.objects.create(name=name, age=age, password=password) return Response(dict(msg="OK", code=10000))
삽입 데이터 형식은
{ "name": "nihao", "age": 18, "password": "123456" }
2입니다. list가 포함된 데이터
models.py: import mongoengine class Student2Model(mongoengine.Document): name = mongoengine.StringField(max_length=32) # 用于存储list类型的数据 score = mongoengine.ListField() views.py: from rest_framework.views import APIView class FirstMongo2View(APIView): def post(self, request): name = request.data["name"] score = request.data["score"] Student2Model.objects.create(name=name, score=score) return Response(dict(msg="OK", code=10000))
삽입된 데이터 형식은 다음과 같습니다.
{ "name": "test", "score": [12, 13] }
3 dict 및 list가 포함된 복잡한 json 데이터를 삽입합니다
models.py: import mongoengine class Student3Model(mongoengine.Document): name = mongoengine.StringField(max_length=32) # DictField用于存储字典类型的数据 score = mongoengine.DictField() views.py: from rest_framework.views import APIView class FirstMongo3View(APIView): def post(self, request): name = request.data["name"] score = request.data["score"] Student3Model.objects.create(name=name, score=score) return Response(dict(msg="OK", code=10000))
삽입된 데이터 형식은 다음과 같습니다.
{ "name": "test", "score": {"xiaoming": 12, "xiaoli": 13} } 或者: { "name": "test", "score": {"xiaoming": 12, "xiaoli": {"xiaozhao": 14}} } 或者: { "name": "test", "score": {"xiaoming": 12, "xiaoli": {"xiaozhao": {"xiaoliu": 12, "xiaojian": 18}}} } 或者: { "name": "test", "score": {"xiaoming": 12, "xiaoli": {"xiaozhao": {"xiaoliu": 12, "xiaojian": [12,13,14]}}} }
3단계: mongodb에서 데이터 쿼리
1. 및 복잡한 json 데이터 직렬화
serializers.py: class StudentSerializer(serializers.Serializer): name = serializers.CharField() score = serializers.DictField() # 序列化复杂的json数据 # DictField与EmbeddedDocumentField类似,但是比EmbeddedDocumentField更灵活 views.py: class FirstMongo4View(APIView): def get(self, request): student_info = Student3Model.objects.all() # 增加过滤条件 # student_info = Student3Model.objects.filter(name="test1") ser = StudentSerializer(instance=student_info, many=True) return Response(dict(msg="OK", code="10000", data=ser.data))
2. mongodb에서 중첩 관계가 있는 두 문서 직렬화
models.py: class AuthorModel(mongoengine.EmbeddedDocument): author_name = mongoengine.StringField(max_length=32) age = mongoengine.IntField() class BookModel(mongoengine.Document): book_name = mongoengine.StringField(max_length=64) publish = mongoengine.DateTimeField(default=datetime.datetime.utcnow()) words = mongoengine.IntField() author = mongoengine.EmbeddedDocumentField(AuthorModel) serializers.py: 序列化时注意与rest_framework的序列化中DictField()的区别 from rest_framework_mongoengine import serializers as s1 class AuthorSerializer(s1.DocumentSerializer): # DocumentSerializer继承自drf中的ModelSerializer,用于代替ModelSerializer序列化mongodb中的document. # 具体可以到官网上查看 class Meta: model = AuthorModel fields = ('author_name', 'age') class BookSerializer(s1.DocumentSerializer): author = AuthorSerializer() class Meta: model = BookModel fields = ('book_name', 'publish', 'words', 'author') AuthorSerializer还可以这样写: class AuthorSerializer(s1.EmbeddedDocumentSerializer): # EmbeddedDocumentSerializer继承了DocumentSerializer class Meta: model = AuthorModel fields = ('author_name', 'age') views.py: class BookView(APIView): def get(self, request): """ 查询数据 :param request: :return: """ books = BookModel.objects.all() ser = BookSerializer(instance=books, many=True) return Response(dict(msg="OK", code="10000", data=ser.data))
mongodb에서 두 개의 관련 테이블을 직렬화할 때 직렬 변환기가 Rest_framework의 Serializer 및 ModelSerializer에서 상속되면 다음 예외가 발생합니다.
Django serialization to JSON error: 'MetaDict' object has no attribute 'concrete_model'
이때 직렬 변환기는 Rest_framework_mongoengine 클래스에서 상속되어야 합니다. 자세한 내용은 공식 웹사이트(
http://umutbozkurt.github.io/...
위 내용은 django 개발을 위한 mongodb 구성 및 사용의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

핫 AI 도구

Undresser.AI Undress
사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover
사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool
무료로 이미지를 벗다

Clothoff.io
AI 옷 제거제

AI Hentai Generator
AI Hentai를 무료로 생성하십시오.

인기 기사

뜨거운 도구

메모장++7.3.1
사용하기 쉬운 무료 코드 편집기

SublimeText3 중국어 버전
중국어 버전, 사용하기 매우 쉽습니다.

스튜디오 13.0.1 보내기
강력한 PHP 통합 개발 환경

드림위버 CS6
시각적 웹 개발 도구

SublimeText3 Mac 버전
신 수준의 코드 편집 소프트웨어(SublimeText3)

뜨거운 주제











이 기사는 데비안 시스템에서 Apache Logs를 분석하여 웹 사이트 성능을 향상시키는 방법을 설명합니다. 1. 로그 분석 기본 사항 Apache Log는 IP 주소, 타임 스탬프, 요청 URL, HTTP 메소드 및 응답 코드를 포함한 모든 HTTP 요청의 자세한 정보를 기록합니다. 데비안 시스템 에서이 로그는 일반적으로 /var/log/apache2/access.log 및 /var/log/apache2/error.log 디렉토리에 있습니다. 로그 구조를 이해하는 것은 효과적인 분석의 첫 번째 단계입니다. 2. 로그 분석 도구 다양한 도구를 사용하여 Apache 로그를 분석 할 수 있습니다.

Python은 게임 및 GUI 개발에서 탁월합니다. 1) 게임 개발은 Pygame을 사용하여 드로잉, 오디오 및 기타 기능을 제공하며 2D 게임을 만드는 데 적합합니다. 2) GUI 개발은 Tkinter 또는 PYQT를 선택할 수 있습니다. Tkinter는 간단하고 사용하기 쉽고 PYQT는 풍부한 기능을 가지고 있으며 전문 개발에 적합합니다.

정렬 색인은 특정 필드 별 컬렉션의 문서를 정렬 할 수있는 MongoDB 인덱스 유형입니다. 정렬 색인을 만들면 추가 분류 작업없이 쿼리 결과를 빠르게 정렬 할 수 있습니다. 장점에는 빠른 정렬, 쿼리 재정의 및 주문형 정렬이 포함됩니다. 구문은 db.collection.createIndex ({field : & lt; sort order & gt;}), 여기서 & lt; sort order & gt; 1 (오름차순 순서) 또는 -1 (하강 순서)입니다. 여러 필드를 정렬하는 멀티 필드 분류 인덱스를 만들 수도 있습니다.

PHP와 Python은 각각 고유 한 장점이 있으며 프로젝트 요구 사항에 따라 선택합니다. 1.PHP는 웹 개발, 특히 웹 사이트의 빠른 개발 및 유지 보수에 적합합니다. 2. Python은 간결한 구문을 가진 데이터 과학, 기계 학습 및 인공 지능에 적합하며 초보자에게 적합합니다.

MongoDB 데이터베이스를 설정하려면 명령 줄 (사용 및 DB.CreateCollection ()) 또는 Mongo Shell (Mongo, 사용 및 DB.CreateCollection ())을 사용할 수 있습니다. 다른 설정 옵션에는 데이터베이스보기 (Show DBS), 컬렉션보기 (Show Collection), 데이터베이스 삭제 (DB.DropDatabase ()), 컬렉션 삭제 (DB. & Amp; LT; Collection_Name & amp; gt; .Drop ()), 삽입 문서 (DB. & Amp; LT; Collecti;

MongoDB 사용자를 설정하려면 다음 단계를 따르십시오. 1. 서버에 연결하고 관리자 사용자를 만듭니다. 2. 사용자에게 액세스 권한을 부여 할 데이터베이스를 작성하십시오. 3. CreateUser 명령을 사용하여 사용자를 생성하고 자신의 역할 및 데이터베이스 액세스 권한을 지정하십시오. 4. GetUsers 명령을 사용하여 생성 된 사용자를 확인하십시오. 5. 선택적으로 다른 컬렉션에 대한 다른 권한을 설정하거나 사용자 권한을 부여합니다.

Navicat과 MongoDB에 연결하려면 : Navicat을 설치하고 MongoDB 연결을 만듭니다. 호스트에 서버 주소를 입력하고 포트에 포트 번호를 입력 한 다음 사용자 이름 및 비밀번호에 MongoDB 인증 정보를 입력하십시오. 연결을 테스트하고 저장하십시오. Navicat은 MongoDB 서버에 연결됩니다.

이 기사에서는 DDOS 공격 탐지 방법에 대해 설명합니다. "Debiansniffer"의 직접적인 적용 사례는 발견되지 않았지만 DDOS 공격 탐지에 다음과 같은 방법을 사용할 수 있습니다. 효과적인 DDOS 공격 탐지 기술 : 트래픽 분석을 기반으로 한 탐지 : 갑작스런 트래픽 성장, 특정 포트에서의 연결 감지 등의 비정상적인 네트워크 트래픽 패턴을 모니터링하여 DDOS 공격을 식별합니다. 예를 들어, Pyshark 및 Colorama 라이브러리와 결합 된 Python 스크립트는 실시간으로 네트워크 트래픽을 모니터링하고 경고를 발행 할 수 있습니다. 통계 분석에 기반한 탐지 : 데이터와 같은 네트워크 트래픽의 통계적 특성을 분석하여
