一、web开发模式
1、前后端混合:后端接口返回的是符合html语法的字符串,可以用模板语法。
2、前后端分离:后端接口返回的json或xml格式的数据。
3、api接口:用于前后端交互的url链接,前后端通过统一的规则在此进行数据交换。
二、动态页面/静态页面
1、动态页面:需要实时查询数据库,根据查询结果动态渲染出来的页面。
2、静态页面:无需实时查询数据库,静态页面一经上传每次访问结果相同。
3、页面静态化:对于一些较为庞大,访问量较大的页面,如一些站点的主页,为了减轻服务器频繁查询数据库的压力,会将所有数据统一生成静态页面上传,若有变化,可以修改成新的静态页面再上传。
三、restful规范
1、简介:REST全称,Representational State Transfer,意为,表征性状态转移。
2、restful规范是一种api接口的设计风格,尤其适用于前后端分离的模式,这种风格提倡后端专注提供数据,对外提供数据资源的访问接口即可,所以前端通过url访问api接口这一行为,就是在操作数据资源。
3、任何一个框架都可以实现符合restful规范的api接口,不仅限于django。
4、restful十条:
①数据安全保障:为提高数据交互的安全性,提倡用https协议进行传输。
②api接口特征化:为了让api接口显得一目了然,建议用于api接口的url中包含<api>这一关键字。
③多版本共存:更新后的api接口对应的url应包含版本号,并保留之前的url,这样同一种数据保留多个版本的api接口,并有用于区别版本先后的标识。
④数据即资源:提倡api接口对应的url使用名词以及复数名词,因为api接口一般用于数据的交互,这些数据就是资源。也有部分使用动词的情况,一般这些动词代表了api接口的核心含义。
⑤操作方式取决于请求方式:操作数据的基本方法离不开增删查改,通过请求方式来分别对应。
⑥过滤参数:通过在对应的url上附加参数传递给后端以获取查找条件。
⑦响应状态码:后端应回应不同的状态码以表示不同的处理结果
--- 2xx:
-- 200:常规请求。
-- 201:创建成功。
--- 3xx:
-- 301:永久重定向。
-- 302:临时重定向。
--- 4xx:
-- 403:请求权限错误。
-- 404:请求路径错误。
-- 405:请求方法错误。
--- 5xx:
-- 500:服务器异常。
⑧错误处理:发生错误时,后端应回应错误信息。
⑨不同请求方法应返回对应格式的结果:
--- GET /collection:返回资源对象的列表(数组)。
--- GET /collection/resource:返回单个资源对象。
--- POST /collection:返回新生成的资源对象。
--- PUT /collection/resource:返回完整的资源对象。
--- PATCH /collection/resource:返回完整的资源对象。
--- DELETE /collection/resource:返回一个空文档。
⑩返回结果最好包含下一步所需资源api接口的url:前端通过这个url可以直接下一步操作。
四、drf的安装与快速使用
1、drf安装指令:pip install djangorestframework==3.10.3。
2、快速使用:
# 使用 1 在setting.py 的app中注册 INSTALLED_APPS = [ 'rest_framework' ] 2 在models.py中写表模型 class Book(models.Model): nid=models.AutoField(primary_key=True) name=models.CharField(max_length=32) price=models.DecimalField(max_digits=5,decimal_places=2) author=models.CharField(max_length=32) 3 新建一个序列化类 from rest_framework.serializers import ModelSerializer from app01.models import Book class BookModelSerializer(ModelSerializer): class Meta: model = Book fields = "__all__" 4 在视图中写视图类 from rest_framework.viewsets import ModelViewSet from .models import Book from .ser import BookModelSerializer class BooksViewSet(ModelViewSet): queryset = Book.objects.all() serializer_class = BookModelSerializer 5 写路由关系 from app01 import views from rest_framework.routers import DefaultRouter router = DefaultRouter() # 可以处理视图的路由器 router.register('book', views.BooksViewSet) # 向路由器中注册视图集 # 将路由器中的所以路由信息追到到django的路由列表中 urlpatterns = [ path('admin/', admin.site.urls), ] # 两个列表相加 urlpatterns += router.urls 6 启动,在postman中测试即可