导读:很多朋友问到关于django如何监控到请求的相关问题,本文首席CTO笔记就来为大家做个详细解答,供大家参考,希望对大家有所帮助!一起来看看吧!
Python3.7配合Django2.0来调用钉钉(dingding)在线api实时监测员工考勤打卡情况
新冠疫情期间,大多数公司为了避免交叉感染都或多或少的采用了远程办公的方式,这显然是一个明智的选择,基本上钉钉(dingding)作为一个远程办公平台来用的话,虽然差强人意,但是奈何市面上没有啥更好的选择,矬子里拔将军,也还是可以凑合用的,不过远程办公有个问题,就是每天需要检查员工的考勤,居家办公虽然灵活,但是大家究竟有没有办公,则是另外一回事,钉钉提供的解决方案就是考勤在线打卡功能,但是检查出勤钉钉在移动端就有点费劲,需要在钉钉app里点击至少5次,还不能实时刷新,pc端的钉钉oa系统做的更烂,还不如移动端来得方便,另外如果你在一家上千人的企业里,这家企业有大大小小几十个部门,你又非常倒霉的担任这家公司的人事主管,每天按部门来出员工考勤报表就不是一件容易事了,所以利用钉钉开放的接口,使用Django自己打造一套实时监控员工考勤的web平台是我们本次的目的。
项目背景是一家普通科技公司,大概有五个部门,每个部门100人左右
首先进入钉钉开放平台 :open-dev.dingtalk.com
在企业内部开发中,选择小程序,新建一个小程序应用,这里其实也还有别的选择,比如h5微应用,主要是小程序兼容性更好一点。
填写应用的名称、简介、Logo等基本信息这些按下不表,按照要求填写即可,也不必非得填写真实信息,这里有个坑就是一定不要忘了配置安全域名或者ip,安全域名是当我们的检测平台上线的时候部署的域名,应用可以跟指定的域名进行网络通信,如果不配置的话,请求钉钉接口会报403错误。
另外还有一个坑,也就是钉钉默认开放的接口仅限于基础权限接口
如果需要考勤或者签到接口的话,还得单独点击申请,这就有点让人看不懂了,那么多接口,全都得靠用鼠标点击开通,不开通就用不了,这个用户体验真是让人非常酸爽,产品设计成这样,钉钉的pm难辞其咎。
OK,前置准备工作就已经就绪了,现在我们只要根据官方文档来写接口就可以了,选择服务端api文档:
钉钉考勤打卡的接口说明是这样的:
这里每个接口都需要一个access_token用来鉴权,这个token是用id和秘钥通过接口交换回来的,具体在应用详情里可以获取
这里我们封装成方法
搞定了token,还需要获取您的部门下所有员工的员工id,因为考勤接口参数只能接受员工id,而非部门id
最后请求考勤接口即可
完整的后台Django后台接口
这样,就可以愉快的通过线上平台来实时监测部门员工考勤了,效果是这样的:
Django请求与响应(request)与(response)
服务器接收到http协议的请求后,会根据报文创建HttpRequest对象视图函数的第一个参数是HttpRequest对象在django.http模块中定义了HttpRequest对象的API
form标签中的‘GET’和‘POST’
在HTML中,form表单的作用是收集标签中的内容,form.../form 中间可以由访问者添加类似于文本,选择,或者一些控制模块等等.然后这些内容将会被送到服务端。
一个表单必须指定两样东西:
form表单使用get方式提交的例子:
可以看见在地址栏会显示参数。
form表单使用post方式提交的例子:
一键多值的getlist方法:
request对象的属性GET、POST都是QueryDict类型的对象
与python字典不同,QueryDict类型的对象用来处理同一个键带有多个值的情况
GET属性:
View类视图以请求方式为类方法.
在对应的方式下面编写对应的逻辑函数.
就是将视图中的方法以类的方式书写逻辑。
View类视图的引用.
在url.py中配置路由是通过: as_view()
Django在处理文件上传的时候,文件数据被保存在了request.FILES,FILES中的每个键为input type=\"file\" name=\"\" /中的name
设置文件的存储路径:
1.在项目根目录下static中创建media文件夹
2.图片上传后,会被保存到“/static/media/文件”
3.打开settings.py文件,增加media_root项
FILES只有在请求的方法为POST 且提交的form带有enctype=\"multipart/form-data\" 的情况下才会包含数据。否则,FILES 将为一个空的类似于字典的对象
文件上传视图函数:
HttpResponse对象:
HttpResponse的子类:
返回数据的响应函数有:
HttpResponse() 返回简单的字符串对象
render() 渲染模板
redirect() 重定向
JsonResponse() 返回json数据
HTTP协议:
HTTP(超文本传输协议)是一个应用层协议,由请求和响应构成,是一个标准的客户端服务器模型。HTTP是一个无状态的协议。
客户端和服务器都是怎么记录登录的状态的呢?
浏览器中的----cookie:(请自行查找)
注意:设置cookie值以及删除cookie值都是response对象的操作,而获取cookie是从requeset相应中获得的.
虽然cookie可以保存状态,但注意不要存储敏感信息.
django如何接收android发送的请求,求详细代码
restful接口,给你一个示例吧,是我自己写的论坛App的发评论的代码:
@hybrid_login_required
def post_Comment(request):
comment = Comment()
#print dir(dict(request.POST))
user = request.user
comment.user=user
comment.reply=Reply.objects.get(id=request.POST[\"rid\"])
form = CommentForm(request.POST,instance=comment)
if form.is_valid():
form.save()
comment.reply.topic.timestame=datetime.now()
comment.reply.topic.save()
return HttpResponse(json.dumps({\"result\":True}),content_type=\"application/json\")
else:
#print form.errors
return HttpResponse(json.dumps({\"result\":False,\"message\":formerror_cat(form)}),content_type=\"application/json\")
django 获取 POST 请求值的几种方法
1、django获取post过来的多个键值对:
Ajax:
var languages = {};
languages[\'english\'] = [\'mark\', \'james\'];
languages[\'spanish\'] = [\'amy\', \'john\'];
$.ajax({
type: \'POST\',
url: \'/save/\',
data: languages,
dataType: \'json\'
});
Django Views.py
if request.is_ajax() and request.method == \'POST\':
for key in request.POST:
print key
valuelist = request.POST.getlist(key)
print valuelist
---------------------
fiddle:
name=june; age=26;
---------------------
views.py
16 for key in request.POST: 17 print key 18 valuelist = request.POST.getlist(key) 19 print valuelist
----------------------------
Development server is running at Quit the server with CONTROL-C. Your method is POST! name [u\'june\']
age [u\'26\'] [04/Apr/2012 10:58:11] \"POST /getuin/ HTTP/1.1\" 200 20
2、一次加载所有值:
def view_example(request):
data=simplejson.loads(request.raw_post_data)
3、获取多个值作为一个列表
request.POST get multiple values
The QueryDict.getlist() allows to get all the checkbox(or select list) values from the request.POST/GET object.
Let’s assume we have a simple form with the following checkboxes. Each checkbox contains an ID of an artist. 1 form method=\"post\" action=\"\" 2 ... 3 input value=\"1\" name=\"artists\" type=\"checkbox\" 4 input value=\"2\" name=\"artists\" type=\"checkbox\" 5 input value=\"3\" name=\"artists\" type=\"checkbox\" 6 ... 7 /form
In views.py : 1 def handle(request): 2 if request.method == \'POST\': 3 artists = request.POST.getlist(\'artists\') # now artists is a list of [1,2,3]
Django接收并解析post/get请求参数
背景:Django开发api接口,接收前端传来的参数值并解析
POST请求
前端传输JSON格式,\'Content-Type\', \'application/json\'
后端接收解析
GET请求
前端传输JSON格式,\'Content-Type\', \'application/json\'
后端接收解析
结语:以上就是首席CTO笔记为大家整理的关于django如何监控到请求的相关内容解答汇总了,希望对您有所帮助!如果解决了您的问题欢迎分享给更多关注此问题的朋友喔~
以上内容为新媒号(sinv.com.cn)为大家提供!新媒号,坚持更新大家所需的互联网后端知识。希望您喜欢!
版权申明:新媒号所有作品(图文、音视频)均由用户自行上传分享,仅供网友学习交流,不声明或保证其内容的正确性,如发现本站有涉嫌抄袭侵权/违法违规的内容。请发送邮件至 k2#88.com(替换@) 举报,一经查实,本站将立刻删除。