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
列表中:
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
在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 配置:
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 的用户 |
问题 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
:
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 的开发,在实际项目中,可能还需要根据具体需求进行更多的定制和优化,比如更复杂的权限管理、数据验证等,但掌握了这个基础流程,就能够为进一步的开发打下良好的基础。