callback

“An illegal choice is detected…” error with dynamic dropdown select list I Drupal8

房东的猫 提交于 2020-03-25 16:03:09
问题 I wrote this code for dynamic dropdown select list in hook_form_alter. Options are populated by an external DB. function car2db_annuncio_form_alter(&$form, FormStateInterface $form_state, $form_id) { if ($form_id == 'node_annuncio_form') { $options_type = car2db_annuncio_type_dropdown_options(); $form['field_marca']['#prefix'] = '<div id="field_marca">'; $form['field_marca']['#suffix'] = '</div>'; $form['field_tipologia']['widget']['#options'] = $options_type; $form['field_tipologia']['widget

Django之内置信号

三世轮回 提交于 2020-03-25 14:35:33
信号 Django中提供了“信号调度”,用于在框架执行操作时解耦。通俗来讲,就是一些动作发生的时候,信号允许特定的发送者去提醒一些接受者。 1、Django内置信号 Model signals pre_init # django的modal执行其构造方法前,自动触发 post_init # django的modal执行其构造方法后,自动触发 pre_save # django的modal对象保存前,自动触发 post_save # django的modal对象保存后,自动触发 pre_delete # django的modal对象删除前,自动触发 post_delete # django的modal对象删除后,自动触发 m2m_changed # django的modal中使用m2m字段操作第三张表(add,remove,clear)前后,自动触发 class_prepared # 程序启动时,检测已注册的app中modal类,对于每一个类,自动触发 Management signals pre_migrate # 执行migrate命令前,自动触发 post_migrate # 执行migrate命令后,自动触发 Request/response signals request_started # 请求到来前,自动触发 request_finished # 请求结束后,自动触发

信号(signal)

孤人 提交于 2020-03-25 14:21:19
一、Django内置信号类型 Django中提供了“信号机制”,用于在框架执行操作时解耦。通俗来讲,就是一些动作发生的时候,信号允许特定的发送者去提醒一些接受者。 比如在数据库操作,插入一条数据之前和之后都写入日志。(审计工作) 这里装饰器就实现不了了,装饰器用在函数上,这里可能在一条代码前后,而且是每次都需要执行。如果你使用装饰器的话,你可能需要在Django源码里面修改save()函数,但是这样是不可取的。 Django早就帮你想到了,它在很多地方都放置了钩子。我们直接调用钩子就可以了。我们可以在信号里面注册很多个函数。触发信号时,会把信号里的函数执行一遍。 1、Model signals pre_init # django的modal执行其构造方法前,自动触发 post_init # django的modal执行其构造方法后,自动触发 pre_save # django的modal对象保存前,自动触发 post_save # django的modal对象保存后,自动触发 pre_delete # django的modal对象删除前,自动触发 post_delete # django的modal对象删除后,自动触发 m2m_changed # django的modal中使用m2m字段操作第三张表(add,remove,clear)前后,自动触发 class_prepared #

django信号浅谈

萝らか妹 提交于 2020-03-25 14:00:51
Django中提供了“信号调度”,用于在框架执行操作时解耦。通俗来讲,就是一些动作发生的时候,信号允许特定的发送者去提醒一些接受者。 1、Django内置信号 Model signals pre_init # django的modal执行其构造方法前,自动触发 post_init # django的modal执行其构造方法后,自动触发 pre_save # django的modal对象保存前,自动触发 post_save # django的modal对象保存后,自动触发 pre_delete # django的modal对象删除前,自动触发 post_delete # django的modal对象删除后,自动触发 m2m_changed # django的modal中使用m2m字段操作第三张表(add,remove,clear)前后,自动触发 class_prepared # 程序启动时,检测已注册的app中modal类,对于每一个类,自动触发 Management signals pre_migrate # 执行migrate命令前,自动触发 post_migrate # 执行migrate命令后,自动触发 Request/response signals request_started # 请求到来前,自动触发 request_finished # 请求结束后,自动触发 got

禁用 全局快捷键

穿精又带淫゛_ 提交于 2020-03-24 12:31:12
在给软件添加快捷键时,经常遇到其它软件或者系统已设置的快捷键,导致功能冲突。 HotKey函数 下面介绍一个user32.dll的RegisterHotKey以及UnregisterHotKey热键处理的函数 注册热键 RegisterHotKey function BOOL RegisterHotKey(    HWND hWnd, //响应热键的窗口句柄,如果为空,则注册到调用线程上    Int id, //热键的唯一标识    UINT fsModifiers, //热键的辅助按键    UINT vk //热键的键值 ); 解除注册热键 UnregisterHotKey function BOOL WINAPI UnregisterHotKey(    HWND hWnd,//热键注册的窗口    int id//要解除注册的热键ID ); 添加热键注册和注销函数 流程: Register方法 - 注册user32.dll函数RegisterHotKey以禁用全局键,并在缓存内添加禁用记录 ProcessHotKey方法 - 外界全局键调用时,调用回调函数 1 public class HotKeys 2 { 3 //引入系统API 4 [DllImport("user32.dll")] 5 static extern bool RegisterHotKey(IntPtr

scrapy之多url页面数据的抓取

时光怂恿深爱的人放手 提交于 2020-03-24 11:39:26
【概述】 如果我们想要对某一个网站的全站数据进行抓取,我们通常会有如下两种解决方法: 1.手动请求的发送(即基于Scrapy框架中的Spider的递归爬取进行实现(Request模块递归回调parse方法))代码详见: scrapy之多url页面数据的抓取 2.基于CrawlSpider的自动爬取进行实现(更加简洁和高效,推荐使用) 【CrawlSpider】 1.简介 CrawlSpider其实是Spider的一个子类,除了继承到Spider的特性和功能外,还派生除了其自己独有的更加强大的特性和功能。Spider是所有爬虫的基类,其设计原则只是为了爬取start_url列表中网页,而从爬取到的网页中提取出的url进行继续的爬取工作使用CrawlSpider更合适。 2.两大功能组件: a.链接提取器( LinkExtractor ):提取response中符合规则的链接。 LinkExtractor(allow=r'Items/',deny=xxx,restrict_xpath=xxx,restrict_css=xxx,deny_domains=xxx) 参数说明: allow=r'Items/' # 满足括号中“正则表达式”的值会被提取,如果为空,则全部匹配。  deny=xxx # 满足正则表达式的则不会被提取。 restrict_xpaths=xxx #

callback vs async.js vs promise vs async / await

别来无恙 提交于 2020-03-23 23:42:29
需求: A、依次读取 A|B|C 三个文件,如果有失败,则立即终止。 B、同时读取 A|B|C 三个文件,如果有失败,则立即终止。 一、callback 需求A : let read = function (code) { if (code) { return true; } else { return false; } } let readFileA = function (callback) { if (read(1)) { return callback(null, "111"); } else { return callback("a fail"); } } let readFileB = function (callback) { if (read(1)) { return callback(null, "222"); } else { return callback("b fail"); } } let readFileC = function (callback) { if (read(1)) { return callback(null, "333"); } else { return callback("c fail"); } } readFileA(function (err, data) { if (err) { console.log("open file

WCF后续之旅(9):通过WCF的双向通信实现Session管理[上篇]

China☆狼群 提交于 2020-03-23 10:55:31
我们都知道,WCF支持Duplex的消息交换模式,它允许在service的执行过程中实现对client的回调。WCF这种双向通信的方式是我们可以以Event Broker或者订阅/发布的方式来定义和调用WCFService。今天我们就给大家一个具体的例子:通过WCF的duplex communication方式现在Session管理。 1、Session 管理提供的具体功能 我们的例子实现了下面一些Session Management相关的功能: Start/End Session: 可以调用service开始一个新的Session或者结束掉一个现有的Session。当开始一个Session的时候,service根据client端传入的client相关的信息(ClientInfo),创建一个SessionInfo对象,该对象由一个GUID类型的SessionID唯一标识,代表一个具体的Client和Service的Session。在service端,通过一个dictionary维护者一个当前所有的activesession列表,key为SessionID,value是SessionInfo对象。当client调用相应的service,传入对应的SessionID,该SessionID对应的SessionInfo从该session列表中移除。 Session Timeout:

WCF后续之旅(9):通过WCF的双向通信实现Session管理[上篇]

谁说胖子不能爱 提交于 2020-03-23 10:55:08
我们都知道,WCF支持Duplex的消息交换模式,它允许在service的执行过程中实现对client的回调。WCF这种双向通信的方式是我们可以以Event Broker或者订阅/发布的方式来定义和调用WCF Service。今天我们就给大家一个具体的例子:通过WCF的duplex communication方式现在Session管理。 一、Session 管理提供的具体功能 我们的例子实现了下面一些Session Management相关的功能: Start/End Session: 可以调用service开始一个新的Session或者结束掉一个现有的Session。当开始一个Session的时候,service根据client端传入的client相关的信息(ClientInfo),创建一个SessionInfo对象,该对象由一个GUID类型的SessionID唯一标识,代表一个具体的Client和Service的Session。在service端,通过一个dictionary维护者一个当前所有的active session列表,key为SessionID,value是SessionInfo对象。当client调用相应的service,传入对应的SessionID,该SessionID对应的SessionInfo从该session列表中移除。 Session Timeout:

[ 转 ]jquery的ajax和getJson跨域获取json数据

耗尽温柔 提交于 2020-03-23 02:39:29
目前浏览器端跨域访问常用的两种方法有两种: 1、通过jQuery的ajax进行跨域,这其实是采用的jsonp的方式来实现的。 jsonp是英文json with padding的缩写。它允许在服务器端生成script tags至返回至客户端,也就是动态生成javascript标签,通过javascript callback的形式实现数据读取. html代码: 1 //首先要引入jquery的js包 2 jQuery(document).ready(function(){ 3 $.ajax({ 4 type : "get", //jquey是不支持post方式跨域的 5 async:false, 6 url : "http://api.taobao.com/apitools/ajax_props.do", //跨域请求的URL 7 dataType : "jsonp", 8 //传递给请求处理程序,用以获得jsonp回调函数名的参数名(默认为:callback) 9 jsonp: "jsoncallback", 10 //自定义的jsonp回调函数名称,默认为jQuery自动生成的随机函数名 11 jsonpCallback:"success_jsonpCallback", 12 //成功获取跨域服务器上的json数据后,会动态执行这个callback函数 13 success :