当前位置: 首页 > news >正文

常用的seo网站优化排名北京网站快速排名优化

常用的seo网站优化排名,北京网站快速排名优化,花瓣是模仿哪个网站,门户网站的设计在上一章结尾我们了解到如采用前后端开发分离的架构模式开发,后端几乎不负责任何展现界面的工作,只负责对数据进行管理 ,对数据的管理主要体现在: (增加、修改、删除、列出 )具体的接口参考大佬的文档BYSM…

       在上一章结尾我们了解到如采用前后端开发分离的架构模式开发,后端几乎不负责任何展现界面的工作,只负责对数据进行管理 ,对数据的管理主要体现在:  (增加、修改、删除、列出 具体的接口参考大佬的文档BYSMS系统 API 接口 1.0 | 白月黑羽 本章只做练习

一、添加应用、路由分发、api规划

接口文档明确说明了这是针对管理员用户的请求,我们在前面创建过一个paas的应用专门处理paas相关的请求,所以我们可以再为管理员用户专门创建一个应用mgr来处理相关的 请求

1、创建 mgr应用目录

python manage.py startapp mgr 

2、添加处理请求模块 和 url 路由

前面我们都是直接把函数写到应用的views.py文件里面来处理http请求的,后续如果我们需要添加的函数数量非常多就不方便了,我们可以定义多个函数文件来处理这种请求,比如定义cluster.py 来处理集群相关的请求,sql.py 处理数据库方面的请求

接口文档案例

GET  /api/mgr/customers?action=list_customer  HTTP/1.1#请求参数
http 请求消息 url 中 需要携带如下参数是action 填写的值为list_customer
通过接口文档可以看到对资源的增删改查操作都是同一个URL(/api/mgr/customers)
而不同的请求操作,使用了不同的方法 GET  POST PUT DELETE  

3、路由分发函数

Django 的 url路由功能 不支持 根据 HTTP 请求的方法 和请求体里面的参数 进行路由,如下

path('customers/', 'app.views.list_customer', method='get'),
path('customers/', 'app.views.add_customer',  method='post'),

 碰到这种情况,我们可以编写一个函数去将所有请求做条件判断,转发给不同的函数处理

按照接口文档的url,我们需要将/api/mgr/开头的请求都交给mgr的应用路由处理

 vi Django_demo/Django_demo/urls.py

#添加路由分支,将api/mgr/ 转交给mgr应用下的子路由
path('api/mgr/', include('mgr.urls')),

 vi Django_demo/Django_demo/settings.py

INSTALLED_APPS = ['simpleui','django.contrib.admin','django.contrib.auth','django.contrib.contenttypes','django.contrib.sessions','django.contrib.messages','django.contrib.staticfiles','paas','mgr',   #添加
]

 我们添加了应用配置和路由方向了,下面我们应该去定义api所在的文件和具体的路由配置

定义api函数

vi Django_demo/mgr/k8s.py

import jsonfrom django.http import JsonResponse
from django.shortcuts import renderdef dispatcher(request):  # 将请求参数统一放入request 的 params 属性中,方便后续处理# 判断应用的请求模式为GET时,取出请求后续的内容if request.method == 'GET':request.params = request.GET# POST/PUT/DELETE 请求 参数 从 request 对象的 body 属性中获取elif request.method in ['POST','PUT','DELETE']:# 根据接口,POST/PUT/DELETE 请求的消息体都是 json格式request.params = json.loads(request.body)# 根据不同的action分派给不同的函数进行处理action = request.params['action']if action == 'list_customer':return listcustomers(request)      #查看elif action == 'add_customer':return addcustomer(request)        #新增elif action == 'modify_customer':return modifycustomer(request)     #修改elif action == 'del_customer':return deletecustomer(request)     #删除else:return JsonResponse({'ret': 1, 'msg': '不支持该类型http请求'})def listcustomers(request):return JsonResponse({'ret': 1, 'msg': '展现数据'})
def addcustomer(request):return JsonResponse({'ret': 1, 'msg': '添加数据'})
def modifycustomer(request):return JsonResponse({'ret': 1, 'msg': '修改数据'})
def deletecustomer(request):return JsonResponse({'ret': 1, 'msg': '删除数据'})

 定义mgr下的子路由

vi  Django_demo/mgr/urls.py

from django.urls import pathfrom .k8s import dispatcher
urlpatterns = [path('customers/', dispatcher),  #定义路由
]

4、测试验证

http://127.0.0.1:8000/api/mgr/customers/?action=list_customer

二、列出数据

列出也就是查看,增删改查里面的查询,http 响应消息 body 中, 数据以json格式存储,下面是最开头的接口文档中常见的接口数据返回格式

{"ret": 0,"retlist": [{"ClusterName": "acp-r1-1","id": 1,"NodeSum": "100","PrometheusAddress": "192.168.1.1"},{"ClusterName": "123123","id": 4,"NodeSum": "123123","PrometheusAddress": "123123"}]              
}

从上面格式中看出我们无需将数据库中获取的数据 转化为 供浏览器展示的HTML,在前后端分离中需要展示页面是前端的事情,我们只需要把数据提交上去即可

1、添加数据模型

vi Django_demo/mgr/models.py

#直接拷贝之前paas的
from django.db import modelsclass PaasInfo(models.Model):# 集群名称ClusterName = models.CharField(max_length=200)# node主机数量NodeSum = models.CharField(max_length=200)# prometheus地址PrometheusAddress = models.CharField(max_length=200)

2、修改列出数据函数

vi Django_demo/mgr/k8s.py

#先导入之前paas使用的模型,也就是链接paas用的数据库
from paas.models import PaasInfodef listcustomers(request):# 返回一个 QuerySet 对象 ,包含所有的表记录qs = PaasInfo.objects.values()# 将 QuerySet 对象 转化为 list 类型# 否则不能 被 转化为 JSON 字符串retlist = list(qs)return JsonResponse({'ret': 0, 'retlist': retlist})

3、访问测试

import  requests,pprintresponse = requests.get('http://127.0.0.1:8000/api/mgr/customers/?action=list_customer')pprint.pprint(response.json())

 返回

{"ret": 0,"retlist": [{"ClusterName": "acp-r1-1","NodeSum": "100","PrometheusAddress": "192.168.1.1","id": 1},{"ClusterName": "123123","NodeSum": "123123","PrometheusAddress": "123123","id": 2}]
}

三、添加数据

添加数据,也就是新增数据,传输数据格式如下

{"action":"add_customer","data":{"ClusterName":"X4-scp-1-1","NodeSum":"222","PrometheusAddress":"192.168.1.2"}
}

1、修改添加函数

vi Django_demo/mgr/k8s.py

def addcustomer(request):info    = request.params['data']# 从请求消息中 获取要添加客户的信息# 并且插入到数据库中# 返回值 就是对应插入记录的对象record = PaasInfo.objects.create(ClusterName=info['ClusterName'] ,NodeSum=info['NodeSum'] ,address=info['PrometheusAddress'])return JsonResponse({'ret': 0, 'id':record.id})

2、关闭 Csrf

新创建的项目, Django 缺省会启用一个 CSRF (跨站请求伪造) 安全防护机制。

在这种情况下, 所有的Post、PUT 类型的 请求都必须在HTTP请求头中携带用于校验的数据

为了简单起见,我们先临时取消掉CSRF的 校验机制,等以后有需要再打开

vi Django_demo/Django_demo/settings.py

MIDDLEWARE = ['django.middleware.security.SecurityMiddleware','django.contrib.sessions.middleware.SessionMiddleware','django.middleware.common.CommonMiddleware',#将下面这行注释掉# 'django.middleware.csrf.CsrfViewMiddleware',  'django.contrib.auth.middleware.AuthenticationMiddleware','django.contrib.messages.middleware.MessageMiddleware','django.middleware.clickjacking.XFrameOptionsMiddleware',
]

3、测试

随便建一个新文件用于测试请求url

vi main.py

import  requests,pprint# 构建添加 客户信息的 消息体,是json格式
payload = {"action":"add_customer","data":{"ClusterName":"abc","NodeSum":"133","PrometheusAddress":"192.168.1.2"}
}# 发送请求给web服务
response = requests.post('http://127.0.0.1:8000/api/mgr/customers/',json=payload)
pprint.pprint(response.json())

上面执行完毕后,可以在python上直接get 或者直接浏览器访问下面地址即可,下面有运行了两次所以会有两条相同的数据

http://127.0.0.1:8000/api/mgr/customers?action=list_customer

四、修改数据

1、请求格式

{"action":"modify_customer","id": 3,"newdata":{"ClusterName":"gfs-r3-1","NodeSum":"5000","PrometheusAddress":"192.168.1.21"}
}

2、添加修改函数

def modifycustomer(request):# 从请求消息中 获取修改客户的信息# 找到该客户,并且进行修改操作customerid = request.params['id']newdata    = request.params['newdata']print(customerid,newdata)try:# 根据 id 从数据库中找到相应的客户记录customer = PaasInfo.objects.get(id=customerid)except PaasInfo.DoesNotExist:return  {'ret': 1,'msg': f'id 为`{customerid}`的客户不存在'}#注意修改每个判断的3个变量if 'ClusterName' in  newdata:customer.ClusterName = newdata['ClusterName']if 'NodeSum' in  newdata:customer.NodeSum = newdata['NodeSum']if 'PrometheusAddress' in  newdata:customer.PrometheusAddress = newdata['PrometheusAddress']# 注意,一定要执行save才能将修改信息保存到数据库customer.save()return JsonResponse({'ret': 0})

3、测试

vi main.py

import  requests,pprint# 构建添加 客户信息的 消息体,是json格式
payload = {"action":"modify_customer","id": 3,"newdata":{"ClusterName":"gfs-r3-1","NodeSum":"5000","PrometheusAddress":"192.168.1.21"}
}# 发送请求给web服务
response = requests.post('http://127.0.0.1:8000/api/mgr/customers/',json=payload)
pprint.pprint(response.json())

忘截图了,上面是把id为3的值进行了修改

五、删除数据

1、数据格式

{"action":"del_customer","id": 6
}

 2、添加删除函数

def deletecustomer(request):customerid = request.params['id']try:# 根据 id 从数据库中找到相应的客户记录customer = PaasInfo.objects.get(id=customerid)except PaasInfo.DoesNotExist:return  {'ret': 1,'msg': f'id 为`{customerid}`的客户不存在'}# delete 方法就将该记录从数据库中删除了customer.delete()return JsonResponse({'ret': 0})

3、测试

vi main.py

import  requests,pprint# 构建添加 客户信息的 消息体,是json格式
payload = {"action":"del_customer","id": 4
}# 发送请求给web服务
response = requests.post('http://127.0.0.1:8000/api/mgr/customers/',json=payload)
pprint.pprint(response.json())

http://www.dinnco.com/news/66.html

相关文章:

  • 微信商城小程序多少钱seo168小视频
  • 开发公司房产备案委托书郑州seo技术博客
  • 公司做网站花销会计分录seo网页优化工具
  • 手机自助网站建设专业营销推广团队
  • 个性化网站有哪些百度极速版下载安装
  • 响应式网站wordpress搜索引擎营销是什么
  • 长春好的做网站公司有哪些制作电商网站
  • 网站做任务领q币单页网站seo如何优化
  • c 做网站好嘛竞价网络推广托管
  • 网站个人主页怎么做亿速云
  • 最好的做网站的公司常见的网络营销工具
  • 做网站后期续费是怎么算的西安seo网站关键词
  • 设计的商城网站建设国外搜索引擎排名百鸣
  • 三亚文明城市建设服务中心报名网站抖音代运营公司
  • java做网站如何优化大师怎么卸载
  • 表白网站制作系统源码推广通
  • 河南县wap网站建设公司北京百度推广seo
  • 宁夏做网站建设公司站长统计app软件下载官网安卓
  • 有什么做照片书的网站学校教育培训机构
  • 网站设计要求有哪些关键字排名软件官网
  • 网站备案个人可以做吗网络推广方案有哪些
  • 网站开发的选择是什么seo外链资源
  • 可信赖的邢台做网站企业管理培训课程网课
  • 安徽省建设工程质量协会网站宁波seo软件免费课程
  • 南京网站制作公司电话免费网站排名优化在线
  • wordpress 主题猫seo技巧课程
  • 网站如何测试有无未做链接的文件成都网站建设公司排名
  • 个人备案网站内容中国企业500强
  • 瑞安建设网站谷歌商店下载
  • 深圳网站建设制作报价网络营销有什么特点