Django 中创建一个 API

要在 Django 中创建一个 API,您可以使用 Django REST framework(DRF)。首先按照以下步骤安装并配置 Django REST framework:

步骤 1:安装Django REST framework 确保您已经激活了虚拟环境。在命令行中运行以下命令以安装 Django REST framework:

pip install djangorestframework

步骤 2:配置Django REST framework 将 rest_framework 添加到您的 Django 项目的 INSTALLED_APPS 中。在 my_django_project/settings.py 文件中,找到 INSTALLED_APPS 列表并添加 'rest_framework'

INSTALLED_APPS = [
    # ...
    'rest_framework',
]

现在,您已经在 Django 项目中安装并配置了 Django REST framework。接下来,我们将创建一个简单的 API 示例。

假设您已经创建了一个名为 myapp 的应用。我们将创建一个简单的模型,并为该模型创建一个 API。

步骤 3:创建模型 在 myapp/models.py 中创建一个简单的模型,例如 Message

from django.db import models

class Message(models.Model):
    content = models.CharField(max_length=255)
    created_at = models.DateTimeField(auto_now_add=True)

    def __str__(self):
        return self.content

步骤 4:创建序列化器 在 myapp 目录下创建一个新文件 serializers.py 并创建一个 MessageSerializer

from rest_framework import serializers
from .models import Message

class MessageSerializer(serializers.ModelSerializer):
    class Meta:
        model = Message
        fields = '__all__'

步骤 5:创建视图 在 myapp/views.py 中创建一个 MessageViewSet

from rest_framework import viewsets
from .models import Message
from .serializers import MessageSerializer

class MessageViewSet(viewsets.ModelViewSet):
    queryset = Message.objects.all().order_by('-created_at')
    serializer_class = MessageSerializer

步骤 6:创建路由 在 myapp 目录下创建一个新文件 urls.py,并添加以下内容:

from django.urls import path
from rest_framework.routers import SimpleRouter
from .views import MessageViewSet

router = SimpleRouter()
router.register('messages', MessageViewSet, basename='messages')

urlpatterns = router.urls

步骤 7:在项目的 URL 配置中包含应用程序 URL 在 my_django_project/urls.py 中,将 myapp.urls 添加到 urlpatterns

from django.contrib import admin
from django.urls import path, include

urlpatterns = [
    path('admin/', admin.site.urls),
    path('api/', include('myapp.urls')),
]

步骤 8:应用数据库迁移

python manage.py makemigrations
python manage.py migrate

步骤 9:启动开发服务器

python manage.py runserver

现在您可以在浏览器中访问 http://127.0.0.1:8000/api/messages/ 以查看您的新 API。您还可以使用像 [Postman](https://

注1:

python manage.py makemigrations 命令的主要作用是自动生成数据库迁移文件。这些迁移文件记录了在您的 Django 应用程序中的模型和数据库之间的更改。

以下是 python manage.py makemigrations 命令的详细说明:

  1. 检测模型更改:当您运行 makemigrations 命令时,Django 会检查 INSTALLED_APPS 中列出的所有应用程序,检测模型文件(通常位于 models.py 中)中的更改。

  2. 创建迁移文件:对于检测到的更改,Django 会为您生成迁移文件。这些迁移文件位于各自应用程序文件夹中的 migrations 子文件夹中。迁移文件记录了模型更改的详细信息,这些信息将用于更改数据库结构以匹配模型的当前状态。

  3. 版本控制:迁移文件使您能够跟踪模型更改的历史记录,这对于团队合作和部署更改至生产环境非常有用。您可以将这些迁移文件添加到版本控制系统(如 Git),以便在团队中共享和协作。

需要注意的是,makemigrations 命令只会生成迁移文件,并不会实际应用这些更改到数据库。要将这些更改应用到数据库,您需要运行另一个命令 python manage.py migrate

总结一下,python manage.py makemigrations 命令用于自动检测模型更改并为这些更改生成迁移文件。这使您能够轻松地在数据库和模型之间保持一致性,同时实现版本控制。

注2:

当您在没有连接数据库的情况下运行 python manage.py migrate 命令时,您可能会遇到以下情况之一:

  1. 默认数据库配置:如果您仍在使用默认的 settings.py 文件中的数据库配置,那么默认情况下,Django 会使用 SQLite 数据库。SQLite 是一个文件系统上的数据库,不需要与外部数据库服务器建立连接。在这种情况下,migrate 命令将正常运行并在项目目录中创建一个 SQLite 数据库文件(通常是 db.sqlite3)。

  2. 错误的数据库配置:如果您已经在 settings.py 文件中配置了一个数据库,但配置错误或数据库服务器无法连接(例如,因为服务器关闭或网络问题),那么 migrate 命令将无法执行。您将收到一个错误消息,说明无法连接到数据库。在这种情况下,您需要检查您的数据库配置并确保数据库服务器正在运行并可访问。

  3. 未配置数据库:如果您已经从 settings.py 文件中删除了默认的数据库配置,但尚未添加新的配置,那么 migrate 命令将无法执行。您将收到一个错误消息,说明未配置任何数据库。要解决此问题,您需要在 settings.py 中配置适当的数据库设置。

如果您尝试在没有连接数据库的情况下运行 python manage.py migrate 命令,请检查您的 settings.py 文件中的数据库配置并确保正确设置了数据库连接信息。请注意,在执行迁移之前,请确保数据库服务器正在运行且可访问。

注3:

SQLite 是一个轻量级的、嵌入式的数据库引擎,它存储数据在一个本地磁盘文件中,而不是像其他关系数据库管理系统(RDBMS)那样使用一个单独的服务器进程。SQLite 可以在许多编程语言中使用,并且由于其便携性和轻量级特性,它在很多应用场景中非常受欢迎。

以下是 SQLite 的一些优缺点:

优点

  1. 轻量级:SQLite 是一个轻量级数据库,无需安装或单独的服务器进程即可使用。它的二进制文件很小,可轻松嵌入到应用程序中。

  2. 便携性:SQLite 数据库存储在一个单独的文件中,这使得数据库非常便于复制、备份和传输。

  3. 易于设置和使用:由于不需要配置服务器和管理数据库实例,SQLite 非常容易设置和使用。它提供了许多简化数据库操作的方便功能,如事务支持和强大的 SQL 查询处理。

  4. 跨平台:SQLite 可在多种操作系统(如 Windows、macOS、Linux 等)上运行。

  5. 无需管理员权限:由于 SQLite 是一个嵌入式数据库,它不需要管理员权限就可以在文件系统中创建和操作数据库文件。

缺点

  1. 并发性能较低:SQLite 在并发写入方面表现较差,因为它使用文件锁来控制对数据库文件的访问。这在高并发场景下可能导致性能瓶颈。

  2. 可伸缩性较低:与其他关系数据库管理系统相比,SQLite 的可伸缩性较低。因此,当数据库变得非常大或需要处理大量读写请求时,SQLite 可能无法满足需求。

  3. 缺少一些高级功能:SQLite 缺少一些其他关系数据库管理系统提供的高级功能,如存储过程、用户定义函数和触发器等。

  4. 不适用于大型应用程序:由于 SQLite 的一些限制(如低并发性能和有限的可伸缩性),它可能不适合用于大型应用程序或需要处理大量数据和请求的场景。

总之,SQLite 是一个轻量级、便携式、易于使用的数据库引擎,非常适合用于开发原型、嵌入式设备、小型应用程序和离线处理等场景。然而,在需要高并发性能、大规模可伸缩性或高级数据库功能的场景中,您可能需要考虑使用其他关系数据库管理系统,如 PostgreSQL、MySQL 或 SQL Server 等。

你可能感兴趣的:(django,django,python,后端)