DjangoRestFramework急速入门

简介: DjangoRestFramework急速入门

网络异常,图片无法展示
|




1、前言


Django是一个Python开发的Web框架,使用Django我们可以快速开发网站、个人博客等。但是通常使用Django我们都是使用后端直接将html渲染到浏览器。有时候我们也会使用其开发纯粹的后端接口。至于用作何用,取决于我们在视图函数中国return了什么(return Render 或者 return JsonResponse)。


DjangoRestFramework是基于Django的纯Api开发工具,当我们想要开发一个纯后端程序,为前端提供数据的时候,我们通常会选择DjangoRestFramework。而且我们可以利用DjangoRestFramework的ModelViewSet和serializers.ModelSerializer快速实现Model的CURD。


2、快速开始


2.1、创建项目&安装DJ,DRF


pip install django
pip install djangorestframework
mkdir django-demo && cd django-demo
django-admin startproject dj0
复制代码


2.2、同步数据库&创建用户


python manage.py migrate
python manage.py createsuperuser
复制代码


2.3、创建App


cd dj0 && python manage.py startapp app0
复制代码


2.4、配置项目settings.py


注册app和drf到项目


dj0/settings.py


INSTALLED_APPS = [
    ...
    'rest_framework',
    'app0',
]
复制代码


2.5、模型创建


app0/models.py


from django.db import models
# Create your models here.
class Person(models.Model):
    name=models.CharField(max_length=50,verbose_name='姓名',null=False)
    age=models.IntegerField(verbose_name='年龄')
    sex=models.BooleanField(default=True,verbose_name='性别')
    class Meta:
        db_table='users'
        verbose_name='用户'
        verbose_name_plural = verbose_name
复制代码


创建完模型之后一定记得同步数据库结构。

  1. python manage.py makemigrations
  2. python manage.py migrate


2.6、序列化模型


app0/serializers.py


from rest_framework import serializers
from app0.models import Person
# 创建序列化器类,在试图中被调用
class PersonModelSerializer(serializers.ModelSerializer):
    class Meta:
        model = Person
        fields = "__all__"
复制代码


2.7、视图函数开发


这里我们可以在视图函数中返回html、字符串、json等各种类型的数据,但是在drf的接口中,我们指定查询数据的语句(对象)和序列化类即可。


# Create your views here.
from django.http import HttpResponse
import datetime
def v1(request):
    now = datetime.datetime.now()
    html = "<html><body>It is now %s.</body></html>" % now
    return HttpResponse(html)
def hi(request):
    return HttpResponse('<h1>hi,baby!</h1>')
from rest_framework.viewsets import ModelViewSet
from .models import Person
from .serializers import PersonModelSerializer
# Create your views here.
class PersonViewSet(ModelViewSet):
    queryset = Person.objects.all()  # 指定查询到的数据对象,数据集合
    serializer_class = PersonModelSerializer # 指定序列化器 
复制代码


2.8、url分发


即将app的urls装到project的urls中。虽然我们也可以在project的urls中直接路由到app中的视图,但是为了遵守蓝图的规范,我们还是需要对不同app的路由在project中进行分发。


dj0的urls.py


from django.contrib import admin
from django.urls import path,include
from app0 import views
urlpatterns = [
    path('admin/', admin.site.urls),
    path('app0/', include('app0.urls')),  # 路由到app0/,会自动转发到app0里面的urls中去
    path('',views.hi) # / 路径,会被路由到app0的hi视图中去
    ]
复制代码


app0的urls.py


from django.urls import path
from . import views
from rest_framework.routers import DefaultRouter
# 普通的路由
app_name='app0'
urlpatterns = [
    path('', views.v1,name='app0index'),
    path('hi', views.hi,name='hi'),
]
# drf的路由
router = DefaultRouter()  # 可以处理视图的路由器
router.register('person', views.PersonViewSet)  # 向路由器中注册视图集
urlpatterns += router.urls
复制代码


2.9、启动服务


python manage.py runserver localhost:8989
复制代码


访问链接:http://localhost:8989/app0/person/


1.png


可以看到,DRF为我们提供了一个良好的操作页面,我们可以在这里进行get、post、options请求。即CR功能已经实现。


2.10、CR


我们输入姓名、年龄、性别后点击POST即可创建一条数据。


2.png


2.11、UD


我们访问在访问链接后面加上id即可到达对象的详情页。


访问链接:http://localhost:8989/app0/person/3


3.png


如上,在这个详情页我们就可以对这个对象进行更新删除操作了。


如此,UD功能实现。


以上,CRUD都可以使用curl、http工具进行测试,亦能为前端提供数据支持。


3、总结


DjangoRestFramework就是一个可以不用实现CRUD代码、仅使用Model、Serializers、ModelViewSet就能够快速实现CRUD的Django工具。

相关文章
|
前端开发 Java 程序员
阿里新年献礼:Java性能调优(独孤版),带你打造淘宝秒杀架构
高并发下如何设计秒杀系统?这是个高频面试题。虽然简简单单一句话,看似简单其实不然,这里面水很深,秒杀的整体架构可以概括为“稳、准、快”几个关键字,它所涉及的知识包含了从前端到后端。
|
运维 Prometheus Kubernetes
节约服务器成本50%以上,独角兽完美日记电商系统容器化改造历程
今年4月,完美日记IT系统实现全面云原生化。
3817 0
节约服务器成本50%以上,独角兽完美日记电商系统容器化改造历程
|
移动开发 前端开发 JavaScript
两年经验以下的web前端们需要注意什么?
前些年自己堆前端岗位的经验总结
159 0
|
6月前
|
人工智能 大数据 云计算
开启第二增长曲线!副业必备6000+课程、免费算力、编程实践助你飞速成长!
阿里云为高校学生提供全方位学习计划,含6000+免费精品课程与自测题,及免费在线编程练习。学生可免费获2.68亿小时算力,包括云服务器ECS、对象存储OSS等资源。同时,参与阿里云天池竞赛赢取高额奖金,并通过训练营获得实践经验和证书。借助这些资源,学生能紧跟信息化与AI潮流,为职业发展奠定坚实基础。
144 2
|
设计模式 缓存 Java
吃透阿里2023版Java性能优化小册后,我让公司系统性能提升了200%
性能优化可以说是很多一线大厂对其公司内高级开发的基本要求(其中以Java岗最为显著)。其原因有两个:一是提高系统的性能,二是为公司节省资源。两者都能做到,那你就不可谓不是普通程序员眼中的“调优大神了”。 那么如何成为一名“调优大神”呢?
|
移动开发 算法 SEO
|
JavaScript Java 应用服务中间件
不花钱零门槛、10分钟搭建自己的线上博客平台
博客主要是关于自己搭建的过程,遇到的坑的一些总结,给小伙伴提供一些避坑经验。同时上传了自己的代码,可以直接拉去我的快速搭建。
210 0
不花钱零门槛、10分钟搭建自己的线上博客平台
|
监控 大数据 测试技术
“快!很快!非常快!” —— 众安保险上云经验谈
阿里云服务从开始到现在已经有九年的时间阿里云和用户一直彼此成就共同成长在用户的支持和鞭策下阿里云服务也不断的在成长越来越多的企业也通过阿里云激发业务和技术的化学反应。本文将带领大家了解国内最大的互联网保险公司众安保险的上云之路首先对互联网保险和众安保险进行基本介绍然后介绍众安保险上云动机以及为什么选择阿里云同时详细介绍阿里云计算如何满足并保障众安保险的业务场景最后介绍了众安成立的科技团队目前及未来所做的创新性研究并如何将这些研究成果赋能到金融行业的伙伴中。
4312 0
|
9月前
|
存储 监控 前端开发
【Java应用服务体系】「序章入门」全方位盘点和总结调优技术专题指南
【Java应用服务体系】「序章入门」全方位盘点和总结调优技术专题指南
105 0
|
弹性计算 运维 Linux
我是一名软件专业的学生,目前本科。在校的时候通过朋友推荐了解到阿里云的飞天加速计划能够领取免费的学生服务器进行学习,初次试用时间为两周。通过这方面能力的学习,能够进一步提升我的业务能力和动手能力,无论是对我以后就业还是深造都受益匪浅。
我是一名软件专业的学生,目前本科。在校的时候通过朋友推荐了解到阿里云的飞天加速计划能够领取免费的学生服务器进行学习,初次试用时间为两周。通过这方面能力的学习,能够进一步提升我的业务能力和动手能力,无论是对我以后就业还是深造都受益匪浅。

热门文章

最新文章