小编jps*_*ons的帖子

Python API设计模式问题

我经常发现我的类实例是其他类实例的后代,就像时尚树一样.例如,假设我正在使用Python制作CMS平台.我可能有一个领域,在那个博客下,并在那个帖子下.每个构造函数都将它的父元素作为第一个参数,因此它知道它属于什么.它可能看起来像这样:

class Realm(object):
    def __init__(self, username, password)

class Blog(object):
    def __init__(self, realm, name)

class Post(object);
    def __init__(self, blog, title, body)
Run Code Online (Sandbox Code Playgroud)

我通常会向父类添加一个create方法,因此链接更加自动化.My Realm类可能如下所示:

class Realm(object):
    def __init__(self, username, password):
        ...
    def createBlog(self, name):
        return Blog(self, name)
Run Code Online (Sandbox Code Playgroud)

这允许API的用户不导入每个模块,只导入顶级模块.它可能像:

realm = Realm("admin", "FDS$#%")
blog = realm.createBlog("Kittens!")
post = blog.createPost("Cute kitten", "Some HTML blah blah")
Run Code Online (Sandbox Code Playgroud)

问题是那些创建方法是多余的,我必须在两个地方pydoc相同的参数.

我想知道是否有一个模式(可能使用元类)将一个类实例链接到父类实例.有些方法我可以调用这样的代码并让博客知道它的父域是什么:

realm = Realm("admin", "FDS$#%")
blog = realm.Blog("Kittens!")
Run Code Online (Sandbox Code Playgroud)

python

9
推荐指数
1
解决办法
1123
查看次数

Google登录按钮 - 如何在使用重定向流时在服务器上获取id_token

我在我的网站上添加了"使用Google登录"联合登录按钮.对于桌面我使用的弹出窗口效果很好:

gapi.auth2.init();
gapi.auth2.getAuthInstance().signIn().then(function(user) {
  var id_token = user.getAuthResponse().id_token;
  // ajax call to pass this to server
});
Run Code Online (Sandbox Code Playgroud)

但是在移动设备上我们想要使用重定向而不是弹出窗口,因为在移动浏览器中单独的选项卡有点笨拙.我只是改为:

gapi.auth2.init({
  ux_mode: 'redirect',
  redirect_uri: 'http://example.com/google_login/'
});
Run Code Online (Sandbox Code Playgroud)

这有效,但它添加了我需要的id_token作为哈希片段,服务器无法看到.它最终在:

http://example.com/google_login/#id_token=ASDFASDFASDFASDF
Run Code Online (Sandbox Code Playgroud)

我想我可以渲染一个带有脚本标签的连接器页面拉出window.location.hash并将其作为查询参数重定向到自身,但看起来很疯狂我必须这样做.有没有更好的办法?

federated-identity google-signin

7
推荐指数
0
解决办法
280
查看次数

以root身份运行twistd,找不到模块

我已经写在扭曲的一个简单的web服务器,我试图用其启动守护进程的twistd来.一切正常,reactor.run()但是当我使用twistd -y(作为root)时,找不到直接子目录中的任何包.我正在以root身份运行,因为服务器在端口80上运行.wordd的联机帮助页说:

请注意,如果twistd以root身份运行,则不会在工作目录中搜索Python模块.

那很好但为什么呢?我该如何解决?--rundir .即使我明确地设置了这个选项,twistd似乎也在忽略.

python twisted

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

Javascript 正则表达式引擎:单词边界在非单词字符的字符串开头不匹配

我认为\b匹配在单词和非单词字符之间的过渡处,或者在字符串的开头或结尾处。所以这应该是真的:

'#abc'.match(/\b#/)
Run Code Online (Sandbox Code Playgroud)

但它是 null,至少在 Firefox 和 Chrome 中是这样。知道为什么吗?

javascript regex word-boundary

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