我正在Jekyll写一个使用Liquid的网站.
我有前面的问题,我想看起来像这样:
---
title: Designing algorithms that scale horizontally
speaker: Luke Ehresman, CopperEgg
category: notes.mongodallas.talks
links:
- demo: http://www.github.com/copperegg/mongo-scaling-demo
layout: talknotes
---
Run Code Online (Sandbox Code Playgroud)
在Liquid中,YAML的链接部分来自:
[{'demo' => 'http://www.github.com/copperegg/mongo-scaling-demo' }]
Run Code Online (Sandbox Code Playgroud)
我希望能够迭代数组,做这样的事情:
<a href="{{ link.value }}">{{ link.key }}</a>
Run Code Online (Sandbox Code Playgroud)
但到目前为止,我所有的想法都让我失望了.
我处于这样一种情况:将一个类'instancemethod作为属性访问它是非常有用的(尽管不是绝对必要的).(这是一个使用getattr为字典设置一些返回值的API,我不想弄乱整齐的小东西)
我记得读过一些关于@attribute装饰器的东西,但我找不到一个(用Python或Django)
TL; DR:
我该怎么做:
class foo:
bar = "bar"
def baz(self):
return "baz"
Run Code Online (Sandbox Code Playgroud)
做这个:
>>> f = foo()
>>> f.baz
"baz"
Run Code Online (Sandbox Code Playgroud)
(为清晰起见而编辑)而不是:
>>> f = foo()
>>> f.baz
<bound method foo.baz of <__builtin__.foo instance at 0x...>>
Run Code Online (Sandbox Code Playgroud) 我正在尝试撤消命名的URL并在其中包含查询字符串.基本上,我已经修改了登录功能,我想发送?next=它.
这就是我现在正在做的事情: reverse(name) + "?next=" + reverse(redirect)
这是我想做的事情: reverse(name, kwargs = { 'next':reverse(redirect) } )
我的登录页面的URL(仅作为示例)如下所示:
url(r'^login/', custom_login, name = 'login'),
那么如何修改整个(或调用它)以包含下一个而不必连接它?它充其量只是一种不确定的解决方案.
我在C#中解析一些XML.我从数据库中获取它,因此在使用XmlTextReader读取它之前将其转换为MemoryStream.问题是我得到了这个错误:Name cannot begin with the ' ' character, hexadecimal value 0x20. Line 1, position 3.以下是我的XML和我的代码用于阅读它(它是从数据库出来的,没有空白的第一个字符).有什么建议?
XML:
<? xml version="1.0" encoding="utf-8" ?>
<form>
<e order="0" type="custom" name="test">
<fi type="text" />
<o />
</e>
<e order="1" type="zip" />
<e order="2" type="state" />
</form>
Run Code Online (Sandbox Code Playgroud)
C#:
byte[] byteArray = new byte[formXml.Length];
System.Text.UTF8Encoding encoding = new System.Text.UTF8Encoding();
byteArray = encoding.GetBytes(formXml);
MemoryStream xmlStream = new MemoryStream(byteArray);
XmlTextReader xmlReader = new XmlTextReader(xmlStream);
while (xmlReader.Read())
{
if (xmlReader.HasValue)
{
returnString += xmlReader.Depth.ToString();
}
}
Run Code Online (Sandbox Code Playgroud)
我认为它可能是编码,但我尝试过UTF8和ASCII,但找不到任何东西.
所以这是交易:我正在尝试打开一个文件(从字节),将其转换为字符串,以便我可以在标题中混淆一些元数据,将其转换回字节,然后保存.我现在遇到的问题是使用此代码.当我比较来回转换(但没有修改)的字符串到原始字节数组时,它是不相等的.我怎样才能做到这一点?
public static byte[] StringToByteArray(string str)
{
UTF8Encoding encoding = new UTF8Encoding();
return encoding.GetBytes(str);
}
public string ByteArrayToString(byte[] input)
{
UTF8Encoding enc = new UTF8Encoding();
string str = enc.GetString(input);
return str;
}
Run Code Online (Sandbox Code Playgroud)
这是我如何比较它们.
byte[] fileData = GetBinaryData(filesindir[0], Convert.ToInt32(fi.Length));
string fileDataString = ByteArrayToString(fileData);
byte[] recapturedBytes = StringToByteArray(fileDataString);
Response.Write((fileData == recapturedBytes));
Run Code Online (Sandbox Code Playgroud)
我确定它是UTF-8,使用:
StreamReader sr = new StreamReader(filesindir[0]);
Response.Write(sr.CurrentEncoding);
Run Code Online (Sandbox Code Playgroud)
返回"System.Text.UTF8Encoding".
所以我有一个这样的文本文件:
Item a: <total>
Subitem: 10 min
Subitem 2: 20 min
Run Code Online (Sandbox Code Playgroud)
我想<total>用10和20的总数替换.现在我正在使用以下函数:
let g:S = 0 "result in global variable S
function! Sum(number)
let g:S = g:S + a:number
return a:number
endfunction
function! SumSelection()
let g:S=0
'<,'>s/\d\+/\=Sum(submatch(0))/g
echo g:S
endfunction
vnoremap <s-e> call SumSelection()<cr>
Run Code Online (Sandbox Code Playgroud)
Sum获取传入的数字总和,SumSelection调用所选行中所有数字的总和,并且(假设)Shift + e以可视模式调用SumSelection(或者您选择调用它的任何内容).
问题是,当我选择了一些行时按Shift + e,而不是:call SumSelection()我真正得到的:'<,'>call SumSelection(),这意味着每个选定行调用一次函数.不好,对吗?所以据我所知,没有办法解决这个问题.我该怎么做才能使功能:
所以我正在制作一个调查应用程序.用户在后端选择一种表单,并在前端显示为某种类型.当然,这只是理想情况.现在发生的事情是我无法访问formtastic构建表单的对象.我该怎么说"question.kind"?这只是一个错误.这是我到目前为止所拥有的......
= semantic_form_for @survey, :url => "#", :html => { :method => "get" } do |f|
- for question in @survey.questions
= user_facing_question(f)
Run Code Online (Sandbox Code Playgroud)
到目前为止,补充辅助方法是这样的:
def user_facing_question(f)
f.inputs
end
Run Code Online (Sandbox Code Playgroud) 我正在使用rspec,我正在尝试测试我的模型y是否有很多x.我已经尝试了各种各样的东西,包括循环遍历方法数组,似乎无法在网上找到一个好的方法.那我该怎么用?
我正在尝试从StringIO(或更具体地说是cStringIO)获取数据并将其转换为django.core.files.images.ImageFile.
但它不起作用.不管怎样,我的意思是它在很多方面都失败了,谷歌让我失望了.
到目前为止我有:
pi = ProductImage(product=product)
image = ImageFile(image_file)
image.name = image_name # defined elsewhere
pi.source_image.save(image_name, image)
pi.save()
Run Code Online (Sandbox Code Playgroud)
我的堆栈跟踪如下:
File "dev.py", line 359, in process_csv_item
pi.source_image.save(image_name, image)
File "C:\Python26\lib\site-packages\django\db\models\fields\files.py", line 92, in save
self.name = self.storage.save(name, content)
File "C:\Python26\lib\site-packages\django\core\files\storage.py", line 48, in save
name = self._save(name, content)
File "C:\Python26\lib\site-packages\django\core\files\storage.py", line 168, in _save
for chunk in content.chunks():
File "C:\Python26\lib\site-packages\django\core\files\base.py", line 65, in chunks
counter = self.size
File "C:\Python26\lib\site-packages\django\core\files\base.py", line 39, in _get_size
elif os.path.exists(self.file.name):
AttributeError: 'cStringIO.StringI' object has no attribute …Run Code Online (Sandbox Code Playgroud) 我正在尝试获取模型的属性以显示在另一个模型的Django管理员更改/添加页面中.这是我的模特:
class Download(model.Model):
task = models.ForeignKey('Task')
class Task(model.Model):
added_at = models.DateTimeField(...)
Run Code Online (Sandbox Code Playgroud)
无法切换外键,所以我不能使用Inlines,当然fields = ('task__added_at',)也不能在这里工作.
这样的标准方法是什么?(或者我是否将管理员拉得太远?)
我已经在使用自定义模板,所以如果这是可以做到的答案.但是,我更喜欢在管理员级别这样做.