所以不幸的是,我发现自己处于需要修改现有Pylons应用程序以处理提供具有相同名称的多个参数的URL的情况.类似于以下内容... domain:port/action?c = 1&v = 3&c = 4
通常以这种方式访问参数......
from pylons import request
c = request.params.get("c")
#or
c = request.params["c"]
Run Code Online (Sandbox Code Playgroud)
在任何一种情况下,这将返回"4"作为值,因为忽略除最后一个值之外的所有值似乎是这些情况下的标准行为.但我真正需要的是能够同时访问这两者.我试着打印出request.params并得到这样的东西......
NestedMultiDict([(u'c', u'1'),(u'v', u'3'),(u'c', u'4')])
Run Code Online (Sandbox Code Playgroud)
我没有找到索引它的方法,或访问c的第一个值.
沿着这些方向的东西对我来说效果很好,但也许一些适合Pylons的Python代码.有没有人以前处理过这样的事情?
假设我有两个json文件.我希望能够加载两者,然后将第二个条目添加到第一个.这可能包括添加字段或列表条目.像下面的例子:
file1.json:{"fruit":[{"name":"apple","color":"red"},{"name":"orange","color":"orange"}]}
file2.json:{"fruit":[{"name":"strawberry","color":"red","size":"small"},{"name":"orange","size":"中等"}]}
结果:{"fruit":[{"name":"apple","color":"red"},{"name":"orange","color":"orange","size":"medium" },{"name":"strawberry","color":"red","size":"small"}]}
起初我想把它们加载到字典中并尝试更新:
import simplejson
filea = open("file1.json", 'r')
dicta = simplejson.loads(filea.read())
fileb = open("file2.json", 'r')
dictb = simplejson.loads(fileb.read())
filea.close()
fileb.close()
dicta.update(dictb)
Run Code Online (Sandbox Code Playgroud)
由于两个字典都有一个"水果"条目,我希望它们会合并,但它简单地用dictb中的条目覆盖了条目中的条目.
我意识到我可以编写代码来循环这个例子,但是我使用的实际文件要大得多,也要复杂得多.我想知道是否有一个图书馆在我重新发明轮子之前已经做过类似的事情了.对于它的价值,我使用的是Python 2.6.2.
感谢您的任何建议或意见!
在 Android 中,我有一个扩展 View 的类。在某些情况下,我希望它不绘制自己。我意识到我可以将 Visibility() 设置为 View.INVISIBLE 或 View.GONE,但如果可能的话,我宁愿避免这种情况。如果此自定义视图可见或不可见,则代码的其他部分的行为会有所不同,如果不需要,我不想重写这些部分。
最初我认为它会像覆盖 onDraw() 一样简单,类似于以下内容...
@Override
protected void onDraw(Canvas canvas) {
if(...){ //check some member variables
return;
} else {
//draw code
}
}
Run Code Online (Sandbox Code Playgroud)
这适用于大多数视图,但我发现无论我的条件检查结果如何,背景仍然会显示。在阅读了一些文档后,我发现了这个......
“绘制是通过遍历树并渲染与无效区域相交的每个视图来处理的。因为树是按顺序遍历的,这意味着父母将在他们的孩子之前(即在后面)绘制,兄弟姐妹按照他们出现的顺序绘制在树中。如果您为 View 设置了可绘制的背景,那么 View 会在回调其 onDraw() 方法之前为您绘制它。”
我想出的解决方案有点像黑客......
@Override
protected void onDraw(Canvas canvas) {
if(...){ //check some member variables
//set background to transparent
return;
} else {
//restore default background
//draw code
}
}
Run Code Online (Sandbox Code Playgroud)
所以我想我的问题变成了这样:有没有办法覆盖视图的默认背景绘制行为,这样我就不必更改视图的可见性或背景?