小编Ben*_*end的帖子

使用Django的OpenID最佳解决方案是什么?

请注意:这是一个古老的问题,有古老的答案.大多数链接的应用程序现在都没有维护.这些天,大多数人似乎都使用django-allauthpython-social-auth.为了后人的缘故,我将保留原始问题.


至少有六个Django应用程序为Django提供OpenID身份验证:

我玩了几个.Simon Willison的django-openid给人留下了良好的印象,但由于他处于Djangoland引领潮流的最前沿,我有时难以绕过他的趋势(例如django-openid中的整个动态urlpatterns系统).更重要的是,我无法登录与Google合作.

django-authopenid给人留下了良好的印象,似乎与django-registration有很好的整合.django-socialauthdjango-socialregistration支持Twitter和Facebook,这绝对是一个优势.谁知道Facebook何时以及何时开始成为OpenID提供商......?但是,socialauth似乎有一些问题.

那么,那里最好的OpenID应用程序是什么?请分享任何积极(和消极)的经验.谢谢!

python openid django

252
推荐指数
5
解决办法
3万
查看次数

Facebook Like-Button - 隐藏计数?

在Like-Button 的设置对话框中,布局只有两个选项:

死链接 - 备选1 死链接 - 备选2

不幸的是,我的雇主网站的数字远不及22'000,所以权力决定我们不应该显示"喜欢"的数量,直到这个数字对我们有利.据我所知,我无法通过Javascript或CSS访问按钮的布局(它位于facebook提供的iframe中).有没有其他方法可以隐藏计数?

facebook

72
推荐指数
5
解决办法
15万
查看次数

Django模型继承:创建现有实例的子实例(向下转换)?

我正在尝试整合第三方Django应用程序,该应用程序做出了不幸的继承决定django.contrib.auth.models.User,这对于可插拔应用程序来说是一个很大的禁忌.引用Malcolm Tredinnick:

更重要的是,就像在Python中一样,你不能使用Django的模型继承来"低估".也就是说,如果您已经创建了User实例,那么您不能在没有深思熟虑的情况下,使该实例对应于您尚未创建的子类实例.

好吧,我正处于需要将此第三方应用程序与现有用户实例集成的情况.所以,如果假设我确实愿意在封面下捅,我有什么选择?我知道这不起作用:

extended_user = ExtendedUser(user_ptr_id=auth_user.pk)
extended_user.save()
Run Code Online (Sandbox Code Playgroud)

也没有例外,但是它打破了各种各样的东西,首先django.contrib.auth.models.User用空字符串覆盖所有列...

python django inheritance

47
推荐指数
3
解决办法
9035
查看次数

pip requirements.txt与替代索引

我想将一个repoze Zope2安装的所有要求放在一个pip 需求文件中.大多数repoze包似乎并没有被PyPI上,但有一个替代的PyPI指数为他们这里.但我无法弄清楚如何告诉pip将该索引与需求文件一起使用.对于单个包装,这很容易

pip install zopelib -i http://dist.repoze.org/zope2/2.10/simple/
Run Code Online (Sandbox Code Playgroud)

我尝试了以下内容

pip install -r requirements.txt -i http://dist.repoze.org/zope2/2.10/simple/
Run Code Online (Sandbox Code Playgroud)

或者在我的requirements.txt中所有类型或排列:

zopelib -i http://dist.repoze.org/zope2/2.10/simple/
zopelib --index http://dist.repoze.org/zope2/2.10/simple/
-i http://dist.repoze.org/zope2/2.10/simple/ zopelib
Run Code Online (Sandbox Code Playgroud)

或者(因为文档说"请注意,所有这些选项必须在他们自己的行上.")

--index http://dist.repoze.org/zope2/2.10/simple/
zopelib
Run Code Online (Sandbox Code Playgroud)

那么,告诉pip使用http://dist.repoze.org/zope2/2.10/simple/作为索引的正确方法是什么?

python pip pypi

30
推荐指数
2
解决办法
2万
查看次数

浏览器是否在GET/POST上保留具有相同名称的输入顺序?

我有这个HTML代码与多个inputs同名:

<input type="hidden" value="42" name="authors" />
<input type="hidden" value="13" name="authors" />
<input type="hidden" value="33" name="authors" />
Run Code Online (Sandbox Code Playgroud)

值的顺序很重要.HTML规范是否定义用户代理必须保留此顺序,如果是,那么常见(市场份额> 1%)浏览器是否遵循此定义?

如果有人知道WSGI,特别是Django是否保留了服务器端的订单,那么奖励积分:-)

谢谢!

html wsgi cross-browser

29
推荐指数
2
解决办法
2360
查看次数

Django有没有这样的东西,因为Ruby on Rails上有Heroku

是否有基于云的Django开发,例如基于云的开发和Ruby/heroku的托管环境

python django heroku

16
推荐指数
3
解决办法
2686
查看次数

访问Django的ugettext_lazy的未翻译内容

我正在寻找一种理智的方式来获取一个非翻译内容的ugettext_lazy字符串.我找到了两种方法,但我对其中任何一种都不满意:

the_string = ugettext_lazy('the content')
the_content = the_string._proxy____args[0] # ewww!
Run Code Online (Sandbox Code Playgroud)

要么

from django.utils.translation import activate, get_language
from django.utils.encoding import force_unicode

the_string = ugettext_lazy('the content')
current_lang = get_language()
activate('en')
the_content = force_unicode(the_string)
activate(current_lang)
Run Code Online (Sandbox Code Playgroud)

第一段代码访问一个已明确标记为私有的属性,因此无法确定此代码的工作时间.第二种解决方案过于冗长和缓慢.

当然,在实际代码中,ugettext_lazyied字符串的定义和访问它的代码是appart.

python django internationalization

13
推荐指数
2
解决办法
2527
查看次数

HTML:软破坏(&害羞;)没有破折号?

我有一点布局问题:在客户网站上,我们在一个小盒子里显示人们的联系信息.该框的宽度受到限制.事实上,有些人名字很长(毕竟这是在德国......),电子邮件地址是给定姓名和姓氏的串联.结果:对于某些名称,电子邮件地址会溢出about框所给出的约束.

&shy;@结果之前插入正确的换行符,但看起来像这样:

john.doe-
@example.com
Run Code Online (Sandbox Code Playgroud)

是否有可能抑制破折号?我不想使用<br />,因为对于90%的名称,可用宽度绰绰有余.

html hyphenation soft-hyphen

10
推荐指数
1
解决办法
5616
查看次数

Python:将名称分区列为相同大小的子列表

我有一个名单,例如['Agrajag', 'Colin', 'Deep Thought', ... , 'Zaphod Beeblebrox', 'Zarquon'].现在我想将此列表划分为大致相同大小的子列表,以便子组的边界位于名称的第一个字母,例如AF,GL,MP,QZ,而不是A-Fe,Fi-Mo,Mu-Pra ,Pre-Z.

我只能想出一个不考虑子组大小的静态大小的分区:

import string, itertools

def _group_by_alphabet_key(elem):
    char = elem[0].upper()
    i = string.ascii_uppercase.index(char)
    if i > 19:
        to_c = string.ascii_uppercase[-1];
        from_c = string.ascii_uppercase[20]
    else:
        from_c = string.ascii_uppercase[i/5*5]
        to_c = string.ascii_uppercase[i/5*5 + 4]
    return "%s - %s" % (from_c, to_c)

subgroups = itertools.groupby(name_list, _group_by_alphabet_key)
Run Code Online (Sandbox Code Playgroud)

有更好的想法吗?

PS:这可能听起来有点像家庭作业,但它实际上是一个网页,其中成员应该显示在5-10个同等大小的组中.

python group-by

7
推荐指数
1
解决办法
828
查看次数

在python dict中获取和设置值的最佳习惯用法

我使用a dict作为短期缓存.我想从字典中获取一个值,如果字典中没有该键,则设置它,例如:

val = cache.get('the-key', calculate_value('the-key'))
cache['the-key'] = val
Run Code Online (Sandbox Code Playgroud)

'the-key'已经存在的情况下cache,第二行不是必需的.对此有更好,更短,更具表现力的习语吗?

python

7
推荐指数
3
解决办法
7535
查看次数