下面是Python利用Django写restful API接口的攻略:
1. 简介
restful API(Representational State Transfer API)是一种风格规范,在web开发中被广泛应用。它建立在HTTP协议之上,可以使用多种编程语言实现,比如Python。 Django是Python中最流行的web框架之一,也提供了很好的支持用于编写restful API。
2. 安装Django
首先需要安装Django,可以使用pip命令进行安装:
pip install django
3. 配置Django项目
创建一个Django项目,可以使用以下命令:
django-admin startproject myproject
该命令将在当前目录中创建一个名为“myproject”的Django项目。该项目的结构如下:
myproject/
manage.py
myproject/
__init__.py
settings.py
urls.py
asgi.py
wsgi.py
其中,settings.py
文件中包含关于Django项目的所有配置,urls.py
文件用于定义项目中的urls。
4. 创建Django应用
在Django项目中创建一个应用程序:
python manage.py startapp myapp
将创建一个名为“myapp”的应用程序,应用程序的结构如下:
myapp/
__init__.py
admin.py
apps.py
models.py
serializers.py
tests.py
views.py
migrations/
__init__.py
其中,views.py
包含应用程序的视图。
5. 创建restful API视图
在myapp/views.py
中定义restful API的视图:
from rest_framework.views import APIView
from rest_framework.response import Response
class MyAPI(APIView):
def get(self, request):
return Response("Hello, World!")
这个视图将在收到GET请求时返回字符串“Hello, World!”。
6. 配置restful API路由
在myapp/urls.py
中配置restful API的路由:
from django.urls import path
from .views import MyAPI
urlpatterns = [
path('myapi/', MyAPI.as_view()),
]
这个路由将把请求发送到myapi/
路径上的语音处理程序。
7. 运行Django服务器并测试restful API
首先需要在命令行中运行Django服务器:
python manage.py runserver
然后可以使用Web浏览器访问http://127.0.0.1:8000/myapi/
,将看到“Hello, World!”的字符串响应。你也可以使用cURL工具进行测试:
curl http://localhost:8000/myapi/
以上就是Python利用Django编写restful API的过程。这里更粗略地说明了制作过程。以下是另一条示例说明:
8. 第二个示例:更多的API方法和序列化器
在接下来的示例中,我们将为Django restful API视图中的几个常用方法定义新的函数,并添加序列化器及其他一些功能。首先,我们将从需要使用的模块的导入开始:
from rest_framework import generics
from rest_framework import permissions
from .models import User
from .serializers import UserSerializer
我们定义用于新视图类的序列化器,然后为视图类加上方法。
class UserList(generics.ListCreateAPIView):
queryset = User.objects.all()
serializer_class = UserSerializer
permission_classes = [permissions.IsAuthenticatedOrReadOnly]
class UserDetail(generics.RetrieveUpdateDestroyAPIView):
queryset = User.objects.all()
serializer_class = UserSerializer
permission_classes = [permissions.IsAuthenticatedOrReadOnly]
这是我们如何将这两个新类链到路由器:
from django.urls import include, path
from rest_framework.routers import DefaultRouter
from . import views
router = DefaultRouter()
router.register(r'users', views.UserViewSet)
urlpatterns = [
path('', include(router.urls)),
path('api-auth/', include('rest_framework.urls', namespace='rest_framework'))
]
最后,上面的视图类需要定义一个序列化器类,以下是这个类:
from rest_framework import serializers
from .models import User
class UserSerializer(serializers.ModelSerializer):
class Meta:
model = User
fields = ['id', 'username', 'password', 'email', 'first_name', 'last_name']
extra_kwargs = {'password': {'write_only': True}}
这是我们定义的序列化器,它包含了一个元类,其中使用model来实例化对应的User对象,并设置了password字段的write_only选项。
以上就是Python利用Django编写restful API的第二个示例。在这个示例中,我们使用序列化器和rest_framework的辅助功能,为restful API视图添加了更多的方法和功能。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Python利用Django如何写restful api接口详解 - Python技术站