只有兩天前,我第一次接觸Python,一個完全的新手,就用Django REST Framework輕鬆地創建了一個非常吸引人的服務
经过
我只是想了解如何使用Django创建RESTful API服务器,暂时没有后悔。
这次做的东西
【GitHub】gaku3601/django_mechaerotic
我会把它放在这里。
立即创造男性的浪漫
可以使用pip命令安装以下软件包:
djangorestframework:使得使用Django可以创建RESTful API服务器的工具
django-filter:据说安装后可以方便地编写搜索功能相关代码。
$ pip install djangorestframework
$ pip install django-filter
按照平常的做法,我们要创建PJ和应用程序。
$ django-admin startproject project .
$ python manage.py startapp erotic
按照平常方式,在setting.py文件中添加所创建的app。
另外,如果要使用djangorestframework和django-filter,也需要在其中声明并添加。
INSTALLED_APPS = [
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
'erotic', #追記
'rest_framework', #追記
'django_filters', #追記
]
当我们到达这一步时,我们会立即开始模型定义。
这次,我想尝试以性感女演员模型和与该模型相关的视频信息模型之间的一对多关系来创建。
from django.db import models
# Create your models here.
class SexyActress(models.Model):
name = models.CharField(max_length=20, unique=True)
memo = models.TextField()
"""
管理画面上で表示させる項目を設定する
"""
def __str__(self):
return self.name
class Video(models.Model):
title = models.CharField(max_length=50, unique=True)
sexyActress = models.ForeignKey(SexyActress, related_name='videos', on_delete=models.CASCADE)
url = models.CharField(max_length=300)
memo = models.TextField()
def __str__(self):
return self.title
因为想在管理界面中确认和编辑创建的模型,所以需要按照以下方式编辑admin.py文件。
from django.contrib import admin
from .models import SexyActress, Video
@admin.register(SexyActress)
class SexyActress(admin.ModelAdmin):
pass
@admin.register(Video)
class Video(admin.ModelAdmin):
pass
创建并应用迁移文件。
$ python manage.py makemigrations
$ python manage.py migrate
一旦在管理界面上确认了这种状态。
创建超级用户,并启动系统,然后访问http://localhost:8000/admin/。
$ python manage.py createsuperuser
$ python manage.py runserver
我已经成功创建了一个可以显示和编辑的模型(´・ω・`)b?
我会暂时存储一些数据。
使用Django REST Framework来实现API
在Django REST Framework中似乎需要创建一个名为Serializer的东西,因此将进行实现。
顺便提一下,Serializer在API服务器中需要进行Json到Python模型和Python模型到Json的转换处理,这就是它的作用。
from rest_framework import serializers
from .models import SexyActress, Video
class SexyActressSerializer(serializers.ModelSerializer):
class Meta:
model = SexyActress
fields = ('name', 'memo')
class VideoSerializer(serializers.ModelSerializer):
class Meta:
model = Video
fields = ('title', 'sexyActress', 'url', 'memo')
接下来我们将处理“Views”。
import django_filters
from rest_framework import viewsets, filters
from .models import SexyActress, Video
from .serializer import SexyActressSerializer, VideoSerializer
class SexyActressViewSet(viewsets.ModelViewSet):
queryset = SexyActress.objects.all()
serializer_class = SexyActressSerializer
class VideoViewSet(viewsets.ModelViewSet):
queryset = Video.objects.all()
serializer_class = VideoSerializer
为了进行路由设置,我们将编辑项目和应用的urls.py文件如下。
from django.contrib import admin
from django.urls import path, include
urlpatterns = [
path('admin/', admin.site.urls),
path('api/', include('erotic.urls')),
]
from rest_framework import routers
from .views import SexyActressViewSet, VideoViewSet
from django.urls import path, include
router = routers.DefaultRouter()
router.register(r'sexy-actress', SexyActressViewSet)
router.register(r'video', VideoViewSet)
urlpatterns = [
path('', include(router.urls)),
]
使用这个命令启动服务器,然后在浏览器中尝试访问 http://localhost:8000/api/。
$ python manage.py runserver
用这种方式,可以轻松地创建一系列RESTful API所需的功能,包括【获取列表(GET)】【获取单个(GET)】【删除(DELETE)】【更新(PUT)】【创建(POST)】。
最后
?我成功地创建了一个十分诱人的服务?
因为它具有强烈的一击性,让我感到无比的潜力。虽然有很多东西要记住,但只要记住了,就能很快上手!这就是全套堆栈框架(´・ω・`)
我参考了一本文献。
使用Django REST Framework快速实现API实现