Django之入门CMDB系统(六)前后端分离之后端

  

Django之入门CMDB系统(六)前后端分离之后端

  <人力资源/>   

前言

  
  

作者:何全,github地址:https://github.com/痢痢罳Q交流群:×××

  

通过此教程完成从零入门,能够独立编写一个简单的CMDB系统。

  

目前主流的方法开发方式,分为2种:mvc和mvvc方式。本教程为mvvc(前后端分离)的入门教程。

  

教程项目地址:https://github.com/痢痢?熊猫/

  

教程文档地址:https://github.com/痢痢?pandaAdmin

     

基础

  
  

主要使用djangorestframework模块,提供api. drf中文文档http://drf.jiuyou.info/

/drf/请求   

基础环境配置可以看前面的第一篇。

  

mvvc后端和mvc后端,基本配置信息部分差不多,以下是列出不一样的部分。

     
      <李>模块李   
  
 <代码类="语言文本"> django-cors-headers
  django-crispy-forms
  django-filter
  django-pure-pagination
  djangorestframework
  django-rest-swagger  
  
      <李> 设置   
  
 <代码类="语言python "> AUTH_USER_MODEL='系统。用户的#更改用户表
  
  INSTALLED_APPS=[
  “django.contrib.admin”,
  “django.contrib.auth”,
  “django.contrib.contenttypes”,
  “django.contrib.sessions”,
  “django.contrib.messages”,
  “django.contrib.staticfiles”,
  “system.apps.SystemConfig”,
  “rest_framework”,
  “rest_framework.authtoken”,
  “corsheaders”,
  “django_filters”,
  ]
  
  中间件=[
  “django.middleware.security.SecurityMiddleware”,
  “django.contrib.sessions.middleware.SessionMiddleware”,
  “django.contrib.auth.middleware.AuthenticationMiddleware”,
  “corsheaders.middleware.CorsMiddleware”,
  “django.middleware.common.CommonMiddleware”,
  #“django.middleware.csrf.CsrfViewMiddleware”,
  “django.contrib.auth.middleware.AuthenticationMiddleware”,
  “django.contrib.messages.middleware.MessageMiddleware”,
  “django.middleware.clickjacking.XFrameOptionsMiddleware”,
  ]
  
  # # rest api
  REST_FRAMEWORK={
  “DEFAULT_AUTHENTICATION_CLASSES”:(
  “rest_framework.authentication.BasicAuthentication”,
  “rest_framework.authentication.TokenAuthentication”,
  “rest_framework.authentication.SessionAuthentication”,
  ),
  “DEFAULT_RENDERER_CLASSES”:(
  “rest_framework.renderers.JSONRenderer”,
  “rest_framework.renderers。BrowsableAPIRenderer ' #注释掉可以关闭api的web界面
  ),
  “DEFAULT_PERMISSION_CLASSES”:(
  #“rest_framework.permissions.AllowAny”,
  “rest_framework.permissions.IsAuthenticated”,
  ),
  “DEFAULT_PAGINATION_CLASS”:“rest_framework.pagination.PageNumberPagination”,
  页大小:10
  “DEFAULT_FILTER_BACKENDS”: (“django_filters.rest_framework.DjangoFilterBackend”),
  “DEFAULT_SCHEMA_CLASS”:“rest_framework.schemas.AutoSchema”
  }
  
  CORS_ALLOW_CREDENTIALS=True
  CORS_ORIGIN_ALLOW_ALL=True
  CORS_ORIGIN_WHITELIST=(
  ‘*’,
  )
  MIDDLEWARE_CLASSES=(system.views.DisableCSRFCheck,)
   
  
      <李> system.views.DisableCSRFCheck李   
  
 <代码类="语言python ">
  类DisableCSRFCheck(对象):
  def process_request(自我,要求):
  setattr(请求,“_dont_enforce_csrf_checks”,真的) 
  
      <李> urls . py李   
  
 <代码类="语言python "> django。contrib进口管理
  django。网址导入路径
  从rest_framework。authtoken导入视图
  从rest_framework。文档导入include_docs_urls
  从django.conf。url进口包括
  
  API_TITLE='文档”
  API_DESCRIPTION='文档”
  
  urlpattern=[
  路径(“系统/?包括(“系统。url”,名称空间='系统')),
  路径(admin.site, admin/'。url,),
  路径(“令牌”,views.obtain_auth_token),
  路径(“文档”,include_docs_urls(标题=API_TITLE描述=API_DESCRIPTION authentication_classes=[],
  permission_classes=[])),
  ]
   
  

例子

  
      <李>   

    新建应用系统

      李   <李> models.py李   
  
 <代码类="语言python "> django。数据库导入模型
  从django.contrib.auth。模型导入AbstractUser、集团用户
  
  类用户(AbstractUser):
  ”“”
  基于django表添加字段,如有需要调用用户的情况,请使用此表
  ”“”
  位置=模型。CharField (max_length=64, verbose_name='职位信息的,空白=True, null=True)
  《阿凡达》=模型。CharField (max_length=256, verbose_name='头像”,空白=True, null=True)
  移动=模型。verbose_name CharField (max_length=11日='手机”,空白=True, null=True)
  
  类元:
  db_table='用户的
  verbose_name='用户信息的
  verbose_name_plural=verbose_name
  
  def __str__(自我):
  返回self.username
  
  类测试(models.Model):
  日期=模型。CharField (max_length=96, verbose_name='日期”,空白=True, null=True,)
  name=模型。CharField (max_length=96, verbose_name='姓名”,空白=True, null=True,)
  地址=模型。CharField (max_length=96, verbose_name='地址”,空白=True, null=True,)
  
  # c_time=模型。DateTimeField (auto_now_add=True, null=True, verbose_name=按唇ㄊ奔洹?空白=True)
  # u_time=模型。DateTimeField (auto_now=True, null=True, verbose_name='更新时间”,空白=True)
  
  类元:
  db_table="测试"
  verbose_name="测试”
  verbose_name_plural=verbose_name
  
  def __str__(自我):
  返回self.name
  

Django之入门CMDB系统(六)前后端分离之后端