django2前后端分离——前言

                                初识前后端分离

        对于Python全栈开发工程师来说,使用django开发整个网站项目,是一件再普通不过的事儿了,django强大的模板系统,并没有足以让一个全栈开发工程师觉得有必要搞什么前后端分离,但术业有专攻,一个后端,可以对应不同的前端(比如pc网页端,手机wap端,移动端app,微信小程序……),往往公司的业务需求,都是需要各个流量入口都有的全家桶,如果让全栈工程师,不断开发后端,还要一个一个一种一种的将不同的前端代码开发出来,恐怕过于费时费力了。所以,在面对大型项目时,django全栈开发工程师,还是只要做好后端,开发好api接口,就可以了,其他的,交给其他人做吧!

        1.前后端分离,开发工程师最重要的任务,就是开发api也就是接口,何为api呢?

#urls.py

from app01 import views

urlpatterns = [

    path('admin/', admin.site.urls),

    path('users/',views.users),

]

#views.py

import json

from django.shortcuts import HttpResponse

from django.views import View

def users(request):

    user_list=['alex','oldboy']

    return HttpResponse(json.dumps(user_list))

启动运行django项目,访问http://127.0.0.1:8000/users/


其中http://127.0.0.1:8000/users/ ,就是一条api,只要访问这个api,就给返回特定数据["alex", "oldboy"]

        2.FBV与CBV

FBV:function base view 基于函数视图

CBV:class base view 基于类视图

#urls.py

……

from app01.views import StudentView

urlpatterns = [

    ……

    path('student/',StudentView.as_view()),

]

class StudentView(View):

    """简单测试"""

    def get(self,request):

        return HttpResponse('GET')

    def post(self,request):

        return HttpResponse('POST')

    def put(self,request):

        return HttpResponse('PUT')

    def delete(self,request):

        return HttpResponse('DELETE')

在settings.py 中注释掉CSRF中间件,启动运行django项目

通过使用软件postman,以不同的方式模拟访问http://127.0.0.1:8000/student

        3.列表生成式

class Foo:

    pass

class Bar:

    pass

v=[item() for item in [Foo,Bar]]#列表生成式,v是一个列表对象

#相当于

v=[]

for i in [Foo,Bar]:

    obj=i()

    v.append(obj)

        4.面向对象

1.封装

    #对同一类方法,封装到类中

    #将数据封装到对象中

2.执行流程

    5.小知识点

#view中这样写,给函数加上这个装饰器,可以让这个视图函数不用CSRF检验

from django.views.decorators.csrfimport csrf_exempt,csrf_protect

@csrf_exempt

def users(request):

user_list=['alex','oldboy']

return HttpResponse(json.dumps(user_list))

#view中这样写,给类加上这个装饰器,可以让这个视图类不用CSRF检验

from django.viewsimport View

from django.views.decorators.csrfimport csrf_exempt,csrf_protect

from django.utils.decoratorsimport method_decorator

@method_decorator(csrf_exempt,name='dispatch')

class StudentView(View):

"""简单测试"""

    def get(self,request):

return HttpResponse('GET')

def post(self,request):

return HttpResponse('POST')

def put(self,request):

return HttpResponse('PUT')

def delete(self,request):

return HttpResponse('DELETE')

这个知识点,可以用于权限认证的书写

    6.关于CBV的小总结

    #总结

#本质:基于反射实现

#流程:路由 View dispatch(反射)

#取消csrf认证

你可能感兴趣的:(django2前后端分离——前言)