TLDR: Django 不支持像 MongoDB 这样的 NoSQL 数据库,但这说明了它是如何实现的。


Python 中的虚拟环境

在安装Django之前,先了解一下venv,一个Python的虚拟环境。venv是一个独立的目录,包含 Python 安装和外部包。将其视为任何其他虚拟环境。他们应该 NOT 提交到您的 repo(您可以将其放在目录之外或将其添加到.gitignore)!

使用以下命令创建venv:

python3 -m venv name-of-virtual-env-directory

这将创建name-of-virtual-env-directory以及 Python 安装和项目所需的任何包。

处理虚拟环境的最佳实践是将它们全部存储在同一个地方。因此,您可能希望将它们存储在您的主目录或存储 Git 存储库的任何位置。 IE。:

python3 -m venv ~/.virtualenvs/project-virtual-env

之后,您可以使用以下命令激活虚拟环境:

source ~./virtualenvs/project-virtual-env/bin/activate

每当您使用pip安装软件包时,它都会安装在您所在的活动虚拟环境中。

pip list

给出 venv 中所有已安装软件包的列表。

将依赖项安装到虚拟环境后,请确保在完成后将其停用。使用命令:

deactivate

pip freezepip list类似,但也给出了具体的版本号。将该列表的内容复制到reqirements.txt文件(提交到版本控制 AKA Git)中。然后,当用户克隆您的项目时,他们会运行以下命令来安装所有项目依赖项。

pip install -r requirements.txt

requirements.tx视为 NPM 中使用的package.json

| 另一个选项:virtualenv 是比 venv 更受欢迎的选项。在这里查看使用它。

MongoDB

MongoDB 是一个 NoSQL、非关系、无模式、基于文档的数据库。基于文档意味着数据存储在键值对中,想想 JSON。查看下表以了解 SQL 和 NoSQL 之间的比较。

话题

SQL

无SQL

类型

基于表的数据库

基于文档,例如键值对

架构

使用架构

不需要架构

缩放

不喜欢(垂直)

首选缩放(水平)

最适合酸属性

不符合 ACID

图片说明

这显示了您需要如何使用关系数据库创建模式,以及如何在 MongoDB 中不需要它。

姜戈

MongoDB 没有得到 Django 的正式支持,Django 是一个流行的 Python 网络框架。 PostresSQL、MySQL、Oracle 和 SQLite 是。但是可以按照MongoDB 文档执行此操作。这是因为,通常,您会希望在 Django 中使用关系数据库。

Flask 是 Python 中另一个流行的 Web 框架。与 NoSql 数据库一起使用是更好的选择。您还可以使用django-nonrel,这是一个社区分支,用于向 Django 添加 NoSQL 支持。但是,它不受支持并使用旧的 Django 版本。

有 3 个选项可以使用 Django 连接到 MongoDB。 Pymongo、MongoEngine 和 Djongo。但是通过使用 PyMongo 驱动程序,您可以连接 MongoDB 和 Django。这方面的说明在下一节中。

激活虚拟环境后(从上面),安装Django可以通过以下方式完成:

python -m install Django

查看 Django 版本:

python -m django --version

进入cd目录,输入命令创建项目:

django-admin startproject name-of-project

要启动服务器和应用程序:

python manage.py runserver

之前,我们创建了一个名为name-of-project的项目。我们还可以在项目中创建应用程序。项目可以有多个应用程序(将应用程序视为模块)。使用这个命令:

python manage.py startapp name-of-app

目录

概括

项目名称

根目录(可以任意命名)

»manage.py

CLI 实用程序

» 项目名称

Python 包的目录(例如 name-of-project.settings)

» 初始化.py

告诉 Python 这个目录是一个包

»settings.py

Django 的设置

»urls.py

目录和 URL 路由

»asgi.py

ASGI Web 服务器的入口点

»wsgi.py

WSGI Web 服务器的入口点

PyMongo

根据MongoDB docs,Pymongo 是在 Django 中使用 MongoDB 的首选方式。但如上所述,还有一些其他选项使用 MongoEngineDjongo

安装 PyMongo :

python3 -m pip install pymongo

对于 MongoDB 的安装,最好安装一些可选的依赖项:

pip install pymongo[snappy,gssapi,srv,tls]

以及这个(用于使用 mongodb+srv://):

pip install dnspython

有几种方法可以连接到我们的数据库会话。其中之一涉及在 PROJECT 文件夹(manage.py所在的位置)中创建一个utils.py文件。

from pymongo import MongoClient

def get_db_handle(db_name, host, port, username, password):

 client = MongoClient(host=host,
                      port=int(port),
                      username=username,
                      password=password
                     )
    db_handle = client['db_name']
 return db_handle, client

使用 env 变量隐藏用户名和密码以防止暴露。这超出了本教程的范围,但是如果您有任何问题,请尽管提问。

然后,在app目录下,找到views.py。从这里可以访问函数get_db_handle()

现在,我们的 MongoDB 客户端已连接!如果您想了解如何使用 MongoEngine 或 Djongo 进行设置,只需查看此教程。


了解更多信息:

  • 在 Python 中使用 venv 的虚拟环境

  • 在 Python 中使用 virtualenv 的虚拟环境

  • 安装 Django

  • Django教程1-7

  • Django 设计哲学

  • PyMongo 文档

  • MongoEngine 文档


谢谢阅读!考虑关注我了解更多!

我的博客推特开发者社区HashNode10410 zwz010z1006zw01中

Logo

MongoDB社区为您提供最前沿的新闻资讯和知识内容

更多推荐