当前位置:首页 > 行业动态 > 正文

django api接口例子

python,from django.http import JsonResponse,from django.views.decorators.csrf import csrf_exempt,import json@csrf_exempt,def example_api(request):, if request.method == 'GET':, data = {'message': 'Hello, this is a simple Django API example!'}, return JsonResponse(data), elif request.method == 'POST':, body = json.loads(request.body), data = {'received_data': body}, return JsonResponse(data), else:, return JsonResponse({'error': 'Method not allowed'}, status=405),“这个例子展示了一个基本的Django视图函数,它处理GET和POST请求。对于GET请求,它返回一个简单的消息;对于POST请求,它返回接收到的数据。其他HTTP方法将返回405错误(方法不允许)。

一、项目创建与配置

1、安装 Django

确保已经安装了 Python 环境,然后使用以下命令安装 Django:

 pip install django

2、创建项目

通过以下命令创建一个新的 Django 项目:

 django-admin startproject myproject
   cd myproject

3、创建应用

在项目目录下创建一个应用:

 python manage.py startapp myapp

4、配置安装应用

在项目的settings.py 文件中,将myapp 添加到INSTALLED_APPS 列表中:

django api接口例子

 INSTALLED_APPS = [
       ...
       'myapp',
   ]

二、定义模型

myapp/models.py 文件中定义一个简单的模型,例如一个表示用户信息的模型:

from django.db import models
class User(models.Model):
    username = models.CharField(max_length=100)
    email = models.EmailField()
    def __str__(self):
        return self.username

执行数据库迁移命令来创建对应的数据库表:

python manage.py makemigrations
python manage.py migrate

三、创建序列化器

myapp/serializers.py 文件中创建一个序列化器,用于将模型实例转换为 JSON 格式的数据:

from rest_framework import serializers
from .models import User
class UserSerializer(serializers.ModelSerializer):
    class Meta:
        model = User
        fields = '__all__'

四、编写视图

myapp/views.py 文件中编写视图函数来处理 API 请求:

from rest_framework import viewsets
from .models import User
from .serializers import UserSerializer
class UserViewSet(viewsets.ModelViewSet):
    queryset = User.objects.all()
    serializer_class = UserSerializer

五、配置 URL 路由

myapp/urls.py 文件中配置 URL 路由:

from django.urls import path, include
from rest_framework.routers import DefaultRouter
from .views import UserViewSet
router = DefaultRouter()
router.register(r'users', UserViewSet)
urlpatterns = [
    path('', include(router.urls)),
]

然后在项目的urls.py 文件中包含myapp 的 URL 配置:

django api接口例子

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

六、运行服务器并测试

启动 Django 开发服务器:

python manage.py runserver

打开浏览器访问http://127.0.0.1:8000/api/users/,应该能看到以 JSON 格式返回的用户数据,可以使用工具(如 Postman)发送 HTTP 请求来进行增删改查操作,发送一个 POST 请求到http://127.0.0.1:8000/api/users/,在请求体中包含 JSON 格式的用户数据,就可以创建一个新的用户记录,发送 GET 请求可以获取用户列表,发送 PUT 请求可以更新用户信息,发送 DELETE 请求可以删除用户记录。

请求方法 URL 功能描述
GET /api/users/ 获取用户列表
POST /api/users/ 创建新用户
GET /api/users/{id}/ 获取指定 ID 的用户详情
PUT /api/users/{id}/ 更新指定 ID 的用户信息
DELETE /api/users/{id}/ 删除指定 ID 的用户

相关问答FAQs

问题 1:如何修改默认的数据库?

答:在项目的settings.py 文件中,找到DATABASES 设置部分,根据所使用的数据库类型进行相应修改,如果要使用 MySQL 数据库,需要安装相应的数据库驱动(如mysqlclient),然后将DATABASES 配置为:

DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.mysql',
        'NAME': 'your_database_name',
        'USER': 'your_database_user',
        'PASSWORD': 'your_database_password',
        'HOST': 'your_database_host',
        'PORT': 'your_database_port',
    }
}

问题 2:如何对 API 进行身份验证?

答:Django Rest Framework 提供了多种身份验证方式,简单的可以是使用默认的基于会话的身份验证,也可以配置使用 Basic Authentication、Token Authentication 等,要使用 Token Authentication,首先安装djangorestframework_simplejwt

django api接口例子

pip install djangorestframework_simplejwt

然后在settings.py 中添加相关配置:

REST_FRAMEWORK = {
    'DEFAULT_AUTHENTICATION_CLASSES': (
        'rest_framework_simplejwt.authentication.JWTAuthentication',
    ),
}

并在urls.py 中包含 JWT 的 URL 路由:

from rest_framework_simplejwt.views import (
    TokenObtainPairView,
    TokenRefreshView,
)
urlpatterns += [
    path('api/token/', TokenObtainPairView.as_view(), name='token_obtain_pair'),
    path('api/token/refresh/', TokenRefreshView.as_view(), name='token_refresh'),
]

这样客户端就可以通过获取 token 来进行后续的身份验证请求了。

小编有话说

就是一个简单的 Django API 接口示例,从项目创建、模型定义、序列化器编写、视图实现到 URL 路由配置以及最后的测试都进行了详细的介绍,通过这个例子,希望能帮助大家快速上手 Django API 的开发,在实际项目中,可能还需要根据具体需求进行更多的定制和优化,比如更复杂的权限管理、数据验证等,但掌握了这个基础流程,就能够为进一步的开发打下良好的基础。