我有一些代码(其他人写的):
def render(self, name, value, attrs=None):
if not attrs:
attrs = {}
attrs.update({'class': 'ui-autocomplete-input'})
Run Code Online (Sandbox Code Playgroud)
我认为可以重写为:
def render(self, name, value, attrs={}):
attrs.update({'class': 'ui-autocomplete-input'})
Run Code Online (Sandbox Code Playgroud)
如果有人入境,这当然会失败attrs=None
,但这是否值得期待?attrs={}
(额外浪费的dict创作?)是否会受到惩罚?
我仍然对python很新,无法回答这些问题,但我很好奇.
当我在口译员中测试这个时,我得到:
>>> def x(attrs={}):
... attrs.update({'a': 'b'})
... print attrs
...
>>> x({'b': 'c'})
{'a': 'b', 'b': 'c'}
>>> x({'d': 'e'})
{'a': 'b', 'd': 'e'}
>>> x()
{'a': 'b'}
Run Code Online (Sandbox Code Playgroud)
这怎么会导致问题?请注意,我总是将该dict添加到attrs,即使用户指定了一个(实际上可能指向一个不同的问题(我应该将class属性与现有的属性合并).
-------------------并指出上述缺陷------------------
>>> def yikes(attrs):
... attrs.update({'something': 'extra'})
... print attrs
>>> def x(attrs={}):
... print "Before:", attrs
... attrs.update({'a': 'b'})
... print …
Run Code Online (Sandbox Code Playgroud) 专门用-webkit,-moz -o前缀查看事物,如转换,转换等...
我想要一些像智能sass(我认为可能会这样做,但似乎没有)的东西,它将采用通用形式的命令并为我编写所有长前缀版本.例如:
.shrink {
-webkit-transition: -webkit-transform 1s;
-webkit-transform: scale(0);
-moz-transition: -moz-transform 1s;
-moz-transform: scale(0);
-o-transition: -o-transform 1s;
-o-transform: scale(0);
}
Run Code Online (Sandbox Code Playgroud)
将写成
.shrink {
transition: transform 1s;
transform: scale(0);
}
Run Code Online (Sandbox Code Playgroud)
并且css"编译器"会写出所有其他的东西.....
当我尝试包含所有项目源代码以获得更合理的代码覆盖率时,我最终得到了
----------|----------|----------|----------|----------|----------------|
File | % Stmts | % Branch | % Funcs | % Lines |Uncovered Lines |
----------|----------|----------|----------|----------|----------------|
All files | Unknown | Unknown | Unknown | Unknown | |
----------|----------|----------|----------|----------|----------------|
Run Code Online (Sandbox Code Playgroud)
我的配置包含以下内容:
"collectCoverageFrom": [
"<rootDir>/app_modules/",
"<rootDir>/src/"
],
Run Code Online (Sandbox Code Playgroud)
我也试过没有尾随/
,**/*.js
只有一个尾随*.js
所有无济于事.
基于该--debug
选项,路径扩展到我想要从中收集覆盖信息的路径(不是问题)
那么获得更准确的覆盖信息的魔力是什么?
我能找到的最好的文档来自这个Github PR:https: //github.com/facebook/jest/pull/1349/files
我最终做了:
"collectCoverageFrom": [
"**/*.js",
"!webpack.config.js"
],
Run Code Online (Sandbox Code Playgroud)
这只是工作,因为这是默认配置的一部分
"testPathIgnorePatterns": [
"/node_modules/"
],
Run Code Online (Sandbox Code Playgroud)
它确实为测试运行增加了大量时间.
如何将特定于平台的内容添加到需求文件中?需要一些Windows软件包而不是Linux软件包.
在Linux上不需要WinPExpect和pexpect pywin32,但winpexpect需要它
知道如何处理这个问题吗?
我已经考虑过一个小的python脚本,可以检测平台并通过运行不同平台特定文件的pip以及"主要"需求文件来处理它.似乎也许它应该更简单.
我有一个角度应用程序,它提供了一个包含联系人数据和联系号码列表的表单.每个联系人都可以有N个号码,每个号码都有一个类型(单元格,主页,工作......)下面的代码将json发送到角度应用程序就好了,我可以在那里处理它,包括添加新数字,删除数字.....但是当DRF获得完全相同的格式json时,它无法反序列化它.它抛出了这个错误:
AttributeError: 'Contact' object has no attribute 'numbers'
Run Code Online (Sandbox Code Playgroud)
这是完全有效的,但序列化程序有这个字段,应该能够挂起这些值,以便我保存联系后保存它们.
如果我在更新方法中做了类似这样的事情:
self.object = self.get_object_or_none()
self.object.numbers = []
Run Code Online (Sandbox Code Playgroud)
我可以消除该错误,但它会抛弃这些错误:
{'numbers': [
{u'non_field_errors': [u'Cannot create a new item, only existing items may be updated.']},
{u'non_field_errors': [u'Cannot create a new item, only existing items may be updated.']},
{u'non_field_errors': [u'Cannot create a new item, only existing items may be updated.']}
]}
Run Code Online (Sandbox Code Playgroud)
前两个电话号码不是新的,它们有id字段,来自db,第三个是新的,我正在尝试添加它.
这是代码.当然,这不是一种奇怪的做事方式.Django Rest Framework是我应该使用的吗?我一直在试着像这样的表演停止者,这似乎是记录下来的做事方式,但随后它们爆发了.
class PhoneTypeSerializer(serializers.ModelSerializer):
class Meta:
model = PhoneType
class ContactPhoneSerializer(serializers.ModelSerializer):
number_type = PhoneTypeSerializer(source='number_type')
class Meta:
model = ContactPhone
depth = 1 …
Run Code Online (Sandbox Code Playgroud) 我正在使用Restangular同时对服务器进行几次调用.Restangular返回每个动作的承诺,每个动作都需要对其特定的返回做一些事情,一旦所有3个完成并且它们的.then
功能已经完成,我需要执行另一个功能.
这是在这种情况下做承诺的正确方法吗?
var a, b, c;
a = service1.getList(...).then(function A(data) { do something; $log.debug('a'); return 'a';});
b = service2.getList(...).then(function B(data) { do something; $log.debug('b'); return 'b';});
c = service3.getList(...).then(function C(data) { do something; $log.debug('c'); return 'c';});
$q.all([a,b,c]).then(function wrapUp(values) { $log.debug(values); do something after functions A, B,and C above have finished;}
Run Code Online (Sandbox Code Playgroud)
我不知道$ q.all()是否会在A,B和C的最后运行,或者它是否可以在最后一个函数前面竞争.wrapUp()总是最后被调用吗?
注意A,B和C是承诺a,b和c完成后调用的函数.
传递给wrapUp的values数组似乎是来自A,B和C的返回值.但是,在我的控制台中,函数A记录10次,然后函数B记录10次,然后函数C和函数wrapUp都记录10次(交替).
10x伐木似乎有些东西被打破.....,恐惧的种族情况似乎是可能的....
有人能解释一下这里发生了什么吗?
我正在运行grunt-contrib-compass@0.6.0并且它因此错误而中止:
node_modules/grunt-contrib-compass/node_modules/tmp/lib/tmp.js:261
throw err;
^
Error: socket hang up
at createHangUpError (http.js:1476:15)
at Socket.socketCloseListener (http.js:1526:23)
at Socket.emit (events.js:95:17)
at TCP.close (net.js:465:12)
Run Code Online (Sandbox Code Playgroud)
我升级到grunt-contrib-compass@1.0.1,现在它不再退出,但它会产生以下错误/警告(当发生这种情况时它不再退出,即使它说致命)
Fatal error: socket hang up
Fatal error: socket hang up
Run Code Online (Sandbox Code Playgroud)
我只能假设更好的错误处理是同样的问题.是否有某种方法可以从抛出此错误的内容中获取更好的信息?这是我的Gruntfile的指南针部分
compass: {
options: {
sassDir: '<%= yeoman.app %>/styles',
cssDir: '.tmp/styles',
generatedImagesDir: '.tmp/images/generated',
imagesDir: '<%= yeoman.app %>/images',
javascriptsDir: '<%= yeoman.app %>/scripts',
fontsDir: '<%= yeoman.app %>/fonts',
importPath: '<%= yeoman.app %>/bower_components',
httpImagesPath: '/images',
httpGeneratedImagesPath: '/images/generated',
httpFontsPath: 'styles/fonts',
relativeAssets: false,
trace: true
},
dist: {},
server: {
options: {
debugInfo: true …
Run Code Online (Sandbox Code Playgroud) 在我的浏览器控制台:
> Intl.NumberFormat.supportedLocalesOf('it')
["it"]
Run Code Online (Sandbox Code Playgroud)
在我的计算机上的节点中:
> Intl.NumberFormat.supportedLocalesOf('it')
[]
Run Code Online (Sandbox Code Playgroud)
在我的同事计算机上的节点中:
> Intl.NumberFormat.supportedLocalesOf('it')
["it"]
Run Code Online (Sandbox Code Playgroud)
相同版本的节点4.5.0
Intl.NumberFormat支持应该来自哪里?您需要构建什么才能将它包含在您的节点版本中?
使用 Jinja2 和 Pyramid 与 Python 进行 i18n 工作。似乎不知道如何翻译%%。 我开始怀疑这个 bug 是在 Jinja2 中。
所以我做了更多的调查,看来问题更多的是 gettext 而不是 jinja2,如 repl 所示
>>>gettext.gettext("98%% off %s sale") % ('holiday')
'98% off holiday sale'
>>>gettext.gettext("98%% off sale")
'98%% off sale'
>>>gettext.gettext("98% off %s sale") % ('holiday')
Traceback (most recent call last):
Python Shell, prompt 13, line 1
TypeError: %o format: a number is required, not str
Run Code Online (Sandbox Code Playgroud)
这似乎是一个先有鸡还是先有蛋的问题。
所有这些意味着翻译人员(其中大多数不是计算机程序员)必须非常小心地进行翻译,每个人都需要非常小心包含 …
下面是一个在字段中使用保留字 ( from ) 的序列化器:
class EdgeSerializer(serializers.Serializer):
field_name_map = {
'_from': 'from'
}
class Meta:
read_only_fields = ('_from', 'to', 'weight')
_from = serializers.IntegerField(required=True)
to = serializers.IntegerField(required=True)
weight = serializers.FloatField(required=True)
Run Code Online (Sandbox Code Playgroud)
问题是当我读取serializer.data
“输出”中的字段名称时_from
,不是from
。我尝试过使用source=
,我尝试过反转field_name_map
(键,值)=>(值,键)。
我不能用作from
字段的名称,python 尝试解析文件时崩溃了
所以,我这样做是有效的,但在我嘴里留下了不好的味道,而且似乎是“错误”的做法:
class FromIntegerField(serializers.IntegerField):
def bind(self, field_name, parent):
super().bind(field_name, parent)
self.field_name = 'from'
class EdgeSerializer(serializers.Serializer):
_from = FromIntegerField(required=True)
to = serializers.IntegerField(required=True)
weight = serializers.FloatField(required=True)
class Meta:
read_only_fields = ('_from', 'to', 'weight')
def __init__(self, *args, **kwargs):
super().__init__(*args, **kwargs) …
Run Code Online (Sandbox Code Playgroud) python ×2
angularjs ×1
babel-jest ×1
css ×1
django ×1
gettext ×1
gruntjs ×1
javascript ×1
jestjs ×1
jinja2 ×1
node.js ×1
pip ×1
promise ×1
pyramid ×1
python-2.7 ×1
restangular ×1
virtualenv ×1