小编Ove*_*ked的帖子

Safari和Chrome后退按钮更改隐藏,并在表单中提交值

Safari和Chrome上都会出现以下问题,因此可能是WebKit问题.

页面A:要求您登录查看的页面,包含一个具有type = submit按钮的表单,其中name = submit,value = a

第B页:其他一些页面

页面C:询问用户登录页面,包含一个带有type = submit按钮的表单,其中name = submit和value = c

用户访问页面A,然后访问页面B.然后空闲和用户的登录会话超时.用户点击后退按钮返回到页面A.浏览器将用户重定向到页面C.

在Safari和Chrome上,当呈现C时,页面C上的表单具有type = submit按钮,name = submit,但值显示为"a".

如果在页面C上重新加载,"c"将显示为name = submit按钮的值.

type = hidden输入字段会出现同样的问题; 当用户点击后退按钮时,它们的值也会从其他某种形式更改为其他值.此外,此问题也显示没有重定向,只需提交然后返回.在这种情况下,前一页面呈现的隐藏和提交CGI变量的值不正确.

到目前为止,我能想到的唯一修复是在页面C加载后使用Javascript重置type = hidden和type = submit变量值,以确保值正确.但这并不干净,普遍适用.

没有WebKit修复此错误,有没有人遇到更好的解决方法?

谢谢.

browser webkit

6
推荐指数
1
解决办法
8775
查看次数

Sencha Touch和ExtJS

Sencha Touch看起来令人印象深刻,ExtJS看起来很棒.

我正在评估是否应该为即将推出的应用程序使用ExtJS或SproutCore.既然Sencha Touch正在混合中,我想知道我是否选择了ExtJS,它会更容易将port/migrate部分应用程序移植到移动世界.

真的吗?我能为桌面浏览器的ExtJS和移动设备的Sencha Touch使用相同的代码库吗?

如果不是代码库会有多大不同?

sencha-touch

6
推荐指数
1
解决办法
4545
查看次数

Django QuerySet直接访问外键字段,无需强制连接

假设您有一个模型Entry,其中一个字段"author"指向另一个模型Author.假设此字段可以为null.

如果我运行以下QuerySet:

Entry.objects.filter(作者= X)

其中X是某个值.假设在MySQL中我在Entry上为其他一些列和author_id设置了一个复合索引,理想情况下我希望SQL在Entry模型上使用"author_id",这样它就可以使用复合索引.

事实证明,Entry.objects.filter(author = 5)可以工作,没有连接完成.但是,如果我说author = None,Django会与Author进行连接,然后添加到Where子句Author.id IS NULL.所以在这种情况下,它不能使用复合索引.

有没有办法告诉Django只检查pk,而不是按照链接?

我知道的唯一方法是在QuerySet中添加一个额外的.extra(where = ['author_id IS NULL']),但我希望.filter()中的一些魔法可以工作.

谢谢.

(对不起,我之前对此并不清楚,感谢lazerscience和Josh的回答).

django django-queryset

6
推荐指数
1
解决办法
2897
查看次数

Python UTF-8转换问题

在我的数据库中,我存储了一些UTF-8字符.例如"名称"字段中的"α"

通过Django ORM,当我读到这个时,我会得到类似的东西

>>> p.name
u'\xce\xb1'
>>> print p.name
α
Run Code Online (Sandbox Code Playgroud)

我希望'α'.

经过一番挖掘,我想如果我做了

>>> a = '?'
>>> a
'\xce\xb1'
Run Code Online (Sandbox Code Playgroud)

因此,当Python试图显示'\ xce\xb1'时,我得到alpha,但是当它试图显示u'\ xce\xb1'时,它是双重编码?

为什么我首先得到你'xce\xb1'?有没有办法可以回到'\ xce\xb1'?

谢谢.我的UTF-8和unicode处理知识确实需要一些帮助......

python django unicode encoding utf-8

6
推荐指数
1
解决办法
2605
查看次数

使用Ruby C Extension进行垃圾收集

我正在通过Ferret(Lucene的Ruby端口)代码来解决一个bug.Ferret代码主要是Ruby的C扩展.我遇到了垃圾收集器的一些问题.我设法修复它,但我不完全理解我的修复=)我希望有更深入的Ruby和C扩展知识的人(这是我在Ruby的第3天)可以详细说明.谢谢.

情况如下:

在Ferret C代码的某些地方,我将返回一个"Token"到Ruby的土地.代码看起来像

static VALUE get_token (...)
{
  ...
  RToken *token = ALLOC(RToken);
  token->text = rb_str_new2("some text");
  return Data_Wrap_Struct(..., &frt_token_mark, &frt_token_free, token);
}
Run Code Online (Sandbox Code Playgroud)

frt_token_mark调用rb_gc_mark(token-> text)和frt_token_free只用free(令牌)释放令牌

在Ruby中,此代码与以下内容相关:

token = @ input.next

基本上,@ input设置为某个对象,在其上调用下一个方法会触发get_token C调用,该调用返回一个令牌对象.

在Ruby领域,我做了类似w = token.text.scan('\ w +')的事情.

当我在一个1循环内运行此代码(以隔离我的问题)时,在某些时候(大约当我的ruby进程mem足迹达到256MB,可能是一些GC阈值)时,Ruby会因为错误而死

扫描方法调用终止对象

或者只是核心转储.我的猜测是token.text被垃圾收集了.

我不太了解Ruby C扩展,知道Data_Wrap_Struct返回对象会发生什么.在我看来,Ruby land,token =中的赋值应该创建对它的引用.

我的"解决方法"/"修复"是在@input引用的对象中创建一个Ruby实例变量,并将令牌文本存储在那里,以获得对它的额外引用.所以C代码看起来像

RToken *token = ALLOC(RToken);
token->text = rb_str_new2(tk->text);
/* added code: prevent garbage collection */
rb_ivar_set(input, id_curtoken, token->text);
return Data_Wrap_Struct(cToken, &frt_token_mark, &frt_token_free, token);
Run Code Online (Sandbox Code Playgroud)

所以现在我在输入实例变量中创建了一个"curtoken",并在那里保存了一个文本的副本...我已经注意在@input的类的免费回调中删除/删除这个引用.

使用此代码,它的工作原理是我不再获得终止对象错误.

修复似乎对我有意义 - 它为token.text字符串保留了额外的引用,因此在下次调用@input.next之前不会删除token.text的实例(此时a不同的token.text替换curtoken中的旧值.

我的问题是:为什么以前不起作用?不应该Data_Wrap_Structure返回一个对象,当在Ruby域中分配时,该对象具有有效的引用而不被Ruby删除?

谢谢.

ruby garbage-collection ferret

5
推荐指数
1
解决办法
2028
查看次数

在Django中使用QuerySet.update()与ModelInstance.save()

我很好奇其他人对这个问题的看法......

在过去的几天里,我一直在来回使用QuerySet.update()与对战ModelInstance.save().显然,如果有很多字段被更改,我会使用save(),但是为了更新几个字段,我认为最好使用它QuerySet.update().使用的好处QuerySet.update()是,您可以update()在同一对象的不同字段上同时运行多个线程,并且您不会遇到种族问题.默认save()方法保存所有字段,因此save()从两个线程并行将是有问题的.

那么问题是如果你有重载的自定义save()方法.我能想到的最好的方法是将自定义save()方法中的任何内容抽象为单独的更新程序方法,这些方法实际上用于QuerySet.update()在模型中设置几个字段.有人用过这种模式吗?

令人恼火的是,在Django Admin中,即使在您只编辑一个字段的更改列表模式下进行编辑,整个模型也会被保存.这基本上意味着如果有人在他/她的浏览器上打开了更改列表,而在系统中某个其他地方更新了某个字段,则当该用户从更改列表中保存更改时,该更新的值将被丢弃.有这个问题的解决方案吗?

思考?

谢谢.

django

4
推荐指数
1
解决办法
6305
查看次数