在工作中时常需要登录服务器做一系列操作,每次输入ssh xxx总是很麻烦。这时候为什么不考虑写一个通用的小脚本呢? go语言是一门新兴语言,能够在很多地方发挥总用。...这个小程序实现的功能是从用户指定的文件中读取相关配置,然后根据用户指令执行相关操作。...fmt.Println("请输入文件名参数") return } list := listNode(os.Args[1]) fmt.Println("请选择执行的语句...a.data gavin,xxxx,192.168.1.128:22,echo ok3 >>a.data gavin,xxxx,192.168.1.128:22,echo ok4 >>a.data 小程序限制使用...如果输入的是0,则执行所有配置项。也就是说如果有固定执行的任务,可以很方便地批量去操控了。
可能你还想在view执行之前做一些操作,这种情况就可以用 middleware来实现。...方法首先执行,而它的process_response方法最后执行,最后一个中间件的process_request方法最后一个执行,它的process_response方法是最先执行。...view_func是Django即将使用的视图函数。 (它是实际的函数对象,而不是函数的名称作为字符串。)...如果返回None,Django将继续处理这个请求,执行任何其他中间件的process_view方法,然后在执行相应的视图。...-- 引入JQuery操作cookie --> <script src="https://cdn.bootcdn.net/<em>ajax</em>/libs/jquery-cookie/1.4.1/jquery.cookie.min.js
web框架部分 1.django 中当一个用户登录 A 应用服务器(进入登录状态),然后下次请求被 nginx 代理到 B 应用服务器会出现什么影响?...客户端必须要进行一些特别的设置才能使用正向代理。 反向代理正好相反,对于客户端而言它就像是原始服务器,并且客户端不需要进行任何特别的设置。...网络编程和前端部分 1.AJAX是什么,如何使用AJAX? ajax(异步的javascript 和xml) 能够刷新局部网页数据而不是重新加载整个网页。...比如,在进行登录操作,通过GET请求,用户名和密码都会暴露再URL上,因为登录页面有可能被浏览器缓存以及其他人查看浏览器的历史记录的原因,此时的用户名和密码就很容易被他人拿到了。...IO密集型代码(文件处理、网络爬虫等),多线程能够有效提升效率(单线程下有IO操作会进行IO等待,造成不必要的时间浪费,而开启多线程能在线程A等待时,自动切换到线程B,可以不浪费CPU的资源,从而能提升程序执行效率
request对象方法判断什么类型的请求,如果是Ajax,不管本质是post还是get等,写request.is_ajax()即可 基于Ajax进行登录验证 需求: 1.前端登录页面 2.后端数据库验证前端提交的信息...# return redirect('http://www.baidu.com') # ajax使用重定向出错 response['msg']='登录成功...Ajax,form表单提交完数据会自己刷新,所有在使用button元素提交的时候会刷两次,可以讲form元素去掉; 如果使用Ajax,form元素也可以不去掉,那么就不能使用button元素,可以使用...text/plain:窗体数据以纯文本形式进行编码,其中不含任何控件或格式字符。...上传局部刷新 Ajax上传文件如果不想使用urlencoded默认处理,可以通过 processData: false不预处理,contentType: false不指定编码格式 Ajax上传json格式
例如,Django 包含一个中间件组件 AuthenticationMiddleware,它使用会话将用户与请求关联起来。...也可使用函数的方法 在请求的过程中,上面的中间件会按照书写的顺序从上到下执行,然后是URL解析,最后请求才会来到视图函数;在响应的过程中,上面的中间件会按照书写的顺序从下到上执行,与请求时中间件执行的顺序正好相反...process_request方法都执行完后,匹配路由,找到要执行的视图函数,先不执行视图函数,先执行中间件中的process_view方法,process_view方法返回None,继续按顺序执行,所有...(request=request): if is_ajax(request=request): # Ajax请求返回JSON数据提示用户登录...backurl = request.get_full_path() # 非Ajax请求直接重定向到登录页 # return
执行如下命令安装django-notifications-hq: pip install django-notifications-hq 执行命令后,安装3个库。...可以在任何地方发送消息通知,例如用户注册成功、用户第一次登录等等。主要看你的需求,基本原理都一样,我以django-comments库评论或回复作为例子。...相关的django-comments开发可参考Django评论库开发专题。 此处不建议直接修改评论库提交评论的代码,可使用signals机制处理消息通知。...signals是Django一套信号机制,模型对象操作会产生一系列的信号。例如保存前、保存后。Django自动监控到这些信号会执行对应的代码。...而模版页面用使用request.user,需要用render或render_to_reponse + RequestContext。
如果我们的应用中有很多功能都需要用户先登录才能执行,例如将前面导出Excel报表和查看统计图表的功能都加以登录限制,那么我们是不是需要在每个视图函数中添加代码来检查session中是否包含了登录用户的信息呢...(): # Ajax请求返回JSON数据提示用户登录 return JsonResponse({'code': 10003...# 非Ajax请求直接重定向到登录页 return redirect(f'/login/?...当然,在这个过程中,用户的请求可以被拦截,就像上面我们自定义的中间件那样,如果用户在没有登录的情况下访问了受保护的资源,中间件会将请求直接重定向到登录页,后面的中间件和视图函数将不再执行。...小结 至此,除了对用户投票数量加以限制的功能外,这个投票应用就算基本完成了,整个项目的完整代码请参考https://github.com/jackfrued/django1902,其中用户注册时使用的手机验证码功能请大家使用自己注册的短信平台替代它
orm相关的数据库查询优化 惰性查询 惰性查询指当我们只查数据库而不是用这些数据时,Django不会执行查询数据库的代码,目的是减少不必要的数据库操作,降低数据库的压力。...如: res = models.Book.objects.all()#只有当我们使用res时才会执行数据库查询的操作 all、only与defer all 拿到自己的所有的属性,但是没有与其他表建立外键的属性...(这一特点给用户的感受是在不知不觉中完成请求和响应过程) AJAX 不需要任何浏览器插件,但需要用户允许JavaScript在浏览器上执行。...AJAX的应用场景 搜索引擎根据用户输入的关键字,自动提示检索关键字,网站注册时候的实时用户名的查重,特点: 不刷新页面的前后端数据交互 异步操作,当请求发出后,浏览器还可以进行其他操作 AJAX前的知识储备..., // 发送文件必须要指定的两个参数 contentType:false, // 不使用任何编码 MyFormData对象内部自带编码 django
使用Django对中间件的调用思想完成自己的功能 中间件的调用只需要在配置文件中添加,如果不使用某个中间件,只需要在配置文件中将对应的字符串注释掉就可以,这种调用执行某一代码的方式是不是很方便呢?...csrf中间件详细介绍 跨站请求伪造 csrf全称Cross-site request forgery(跨站请求伪造), 是一种挟制用户在当前已登录的Web应用程序上执行非本意的操作的攻击方法。...而Django中的中间件就是通过这种思想解决跨站请求伪造的问题的。...settings源码剖析及模仿使用 Django settings源码剖析 Django有两个配置文件,一个是用户可以看到的settings文件,另一个是内部的全局的配置文件,这两个配置文件的执行方式是如果用户配置了就用用户配置的...该用户即使没有登录,使用该函数也不会报错。
', 'django.middleware.clickjacking.XFrameOptionsMiddleware', ] 局部使用方法 先导入 from django.views.decorators.csrf...请求都先执行下面操作#} $.ajaxSetup({ beforeSend:function (xhr,settings) {...', ] 2.中间件的五种方法 (1)process_request(self,request) 请求来时执行,不写时直接跳过,执行下一个中间件;当有return HttpResonse时,下面中间件不再执行...优先级最高,执行最近的一个, 然后执行respnse方法 (5)process_response(self, request, response) 请求返回时执行,不写时直接跳过,执行下一个中间件;当有...的使用 (1)views.py def test(request): print('测试中间件') return HttpResponse('ok') (2)m.py from django.utils.deprecation
评论的功能打算用Django的评论库,添加引用却报错。 查了一下,Django原本会自带一个评论库组件,而从1.6版本以后就没有自带了,需要自己安装。...r'^comments/', include('django_comments.urls')), 执行 python ....这些需要使用django_comments的模版标签,在使用标签之前导入加载: {# 导入评论库模块的模版标签 #} {% load comments %} 评论列表可以通过django_comments...而评论提交表单,最主要的是提交的url和表单字段。...为Comments添加Ajax功能,免得提交出错跳到自带的评论页面。 具体可参考django 简易博客开发 4 comments库使用及ajax支持提交前,先在本地验证是否填写。
CSRF攻击原理:网站是通过cookie来实现登录功能的。而cookie只要存在浏览器中,那么浏览器在访问这个cookie的服务器的时候,就会自动的携带cookie信息到服务器上去。...,来自动生成一个带有csrf token的input标签:{% csrf_token %}使用ajax处理csrf防御:如果用ajax来处理csrf防御,那么需要手动的在form中添加csrfmiddlewaretoken..._ajaxSetup(); this.ajax(args); }, 'ajax': function (args) { $.ajax(args); },...根据同源策略,js只能操作属于本域名下的代码,因此js不能操作通过iframe加载来的DOM元素。...如果ifrmae的src属性为空,那么就没有同源策略的限制,这时候我们就可以操作iframe下面的代码了。并且,如果src为空,那么我们可以在iframe中,给任何域名都可以发送请求。
,而不是从A网站发起的。...(局部)不遵循CSRF(指定某些不遵循csrf) @csrf_exempt 三丶应用 1丶普通表单 1 veiw中设置返回值: 2 return render_to_response('Account...token再次发送到服务端,而对于ajax的话,使用如下方式。...之前设置一个请求头,名字是X-CSRFToken, // 在ajax发送之前把请求头放到csrftoken,在一块发过去,对的就执行...} } }); // 上面是获取token,在以后ajax操作前,写上面这个配置。
静态资源和Ajax请求 基于前面的知识,我们已经可以使用Django框架来完成Web应用的开发了。...,在投票时会先跳转到“登录页”要求用户登录,登录成功才能投票;对于未注册的用户,可以在“登录页”点击“新用户注册”进入“注册页”完成用户注册操作,注册成功后会跳转到“登录页”,注册失败会获得相应的提示信息...完成模型迁移之后,我们可以直接使用Django提供的后台管理来添加学科和老师信息,这需要先注册模型类和模型管理类。...Ajax请求 接下来就可以实现“好评”和“差评”的功能了,很明显如果能够在不刷新页面的情况下实现这两个功能会带来更好的用户体验,因此我们考虑使用Ajax技术来实现“好评”和“差评”,Ajax技术我们在Web...'} return JsonResponse(data) 修改显示老师信息的模板页,引入jQuery库来实现事件处理、Ajax请求和DOM操作。
(这一特点给用户的感受是在不知不觉中完成请求和响应过程) AJAX 不需要任何浏览器插件,但需要用户允许JavaScript在浏览器上执行。 ...a.整个过程中页面没有刷新,只是局部刷新了; b.在请求发出后,浏览器不用等待服务器响应结果就可以进行其他操作; 4.AJAX的优缺点 优点: 1.AJAX使用JavaScript...我又有疑问了,同一次登录,form表单中的token每次都会变,而cookie中的token不便,django把那个salt存储在哪里才能保证验证通过呢。直到看到源码。...我们使用表单上传文件时,必须让 表单的 enctype 等于 multipart/form-data,form表单不支持发json类型的contenttype格式的数据,而ajax什么格式都可以发,也是...一般情况下,我们希望这个script标签能够动态的调用,而不是像上面因为固定在html里面所以没等页面显示就执行了,很不灵活。
目录 昨日补充:将自己写的 login_auth 装饰装在 CBV 上 django 中间件 django 请求生命周期 ***** 默认中间件及其大概方法组成 中间件的执行顺序 自定义中间件探究不同操作对中间件执行顺序的影响...注释掉 csrf 中间件时 单功能开启 csrf 校验:csrf_protect Auth 模块 使用 django 自带的 auth 表做登录功能 核心代码 自定义扩展 autor 表字段 效仿 django...大体同 django 请求生命周期 那张图,可能会受以下情况的影响 自定义中间件探究不同操作对中间件执行顺序的影响 测试思路: 在 settings.py 里注册不同中间件,探究默认的执行顺序 在不同中间件的...后台管理只有超级用户才能进入 用了 Auth 模块的方法 ,就最好都用 Auth 模块的方法 修改密码必须调用 .save() 保存,否则无效 使用 django 自带的 auth 表做登录功能 涉及到的...,而不再使用 auth_user(不会再自动创那些表了) 效仿 django中间件配置 实现 功能插拔式效果 django 的中间件 其实就是一个类,一个个功能可以写成类,注释掉就不执行了 我们效仿中间件
COOKIES,字典形式 4. user: 一个django.contrib.auth.models.User 对象表示当前登录用户,若当前用户尚未登录,user会设为django.contrib.auth.models.AnonymousUser...Request 对象用于接收客户端浏览器提交的数据,而 Response 对象的功能则是将服务器端的数据发送到客户端浏览器。...") 也可以给 HttpResponse 传递一个 iterator 作为参数,而不用传递硬编码字符串。 如果你使用这种技术,下面是需要注意的一些事项: iterator 应该返回字符串。...最后,再说明一下,HttpResponse 实现了 write() 方法,可以在任何需要 filelike 对象的地方使用 HttpResponse 对象。 2....当然,你也可以自己定义不包含在上表中的HttpResponse子类。
使用Django服务网页时,只要用户执行导致页面更改的操作,即使该更改仅影响页面的一小部分,它都会将完整的HTML模板传递给浏览器。...但是如果我们只想更新页面的一部分,则不必完全重新渲染页面-这时候就要用到AJAX了。 AJAX提供了一种将GET或POST请求发送到Django视图并接收任何返回的数据而无需刷新页面的方法。...我们从POST请求中获得的响应将像GET请求一样使用链式承诺进行处理。 在视图中处理POST请求 接受POST请求的视图将从请求中获取数据,对其执行一些操作,然后返回响应。...一旦获得了请求中的数据,我们就可以执行用户希望启动AJAX请求的操作。这可能是创建模型的新实例或更新现有实例。 与GET请求一样,可以使用JsonResponse和带有数据的字典将数据发送回页面。...正确而谨慎地使用它,可以使我们的页面感觉更快,并为用户提供更多的交互体验。
,用户登录信息存放再数据库中(django) urls.py from django.contrib import admin from django.urls import path from first...) # 字段中含有该字符串的 models.Book.objects.filter(title__icontains='xx') # 字段中含有该字符串的,不区分大小写...month='xx') # 确定是某一月 models.Book.objects.filter(create_date__year='xx') # 确定是某一年 5.当使用...orm语句执行数据库操作的时候,显示相对应的sql语句 # setting配置 LOGGING = { 'version': 1, 'disable_existing': False,...ret = models.UserInfo.objects.all() print(ret) 5.ajax计算器 // .html <!
,会将外键关联的表与当前表直接拼接起来,然后再执行查询操作,返回的结果也是一个queryset,列表套数据对象,该数据对象获取当前表中的数据或者关联表中的数据,都不会再走数据库; prefetch_related...ajax 1.异步提交 2.局部刷新 ajax基本语法结构 现用的是基于JQuery封装好的ajax,所以用ajax的时候,先导入jQuery; $.ajax({ url:'', # 后端的地址...json格式的字符串 JSON.stringfy({‘username’:’zhang’,’password’:’123′}) 注意:django后端针对json格式的数据,不会做任何处理,原封不动的在放...input文件标签内文件数据 var MyFileobj = $(“input[type=’file’]”)[0].files[0]; 3.需要额外指定两个参数 contentType:false, # 不指定任何编码...,对象自带编码 django能够识别; processData:false, # 浏览器不需要对数据进行任何处理 django能够识别对象中的普通的键值对和文件对象,然后分别放到不同的方法POST和FILES
领取专属 10元无门槛券
手把手带您无忧上云