小编asc*_*bol的帖子

如何使文件上传与Deform和Colander兼容?

我想渲染一个包含一系列文件的表单,代表产品的不同图像.提供文件应该是兼容性的,因此即使没有文件,表单也应该验证.我怎样才能做到这一点 ?

这是我使用的漏勺模式:

    import colander
    import deform
    from deform import Form
    from deform import ValidationFailure
    from deform.interfaces import FileUploadTempStore 


    tmpstore = FileUploadTempStore()

    class Image(colander.Schema):
        image = colander.SchemaNode(
            deform.FileData(),
            widget=deform.widget.FileUploadWidget(tmpstore)
            ) 

    class Images(colander.SequenceSchema):
        images = Image()

    class ProductSchema(colander.Schema):
        completename = colander.SchemaNode(colander.String(), title="Complete Name")

        description = colander.SchemaNode(colander.String(), 
                                 widget = deform.widget.TextAreaWidget())

        images = Images()


    schema = ProductSchema()
    form = Form(schema, buttons=("submit", ))
Run Code Online (Sandbox Code Playgroud)

我试图添加一个'缺失'的参数,如:

image = colander.SchemaNode(
        deform.FileData(),
        missing = ???
        widget=deform.widget.FileUploadWidget(tmpstore)
        ) 
Run Code Online (Sandbox Code Playgroud)

我觉得我什么时候有功能

missing={'filename': None, 'uid':None}
Run Code Online (Sandbox Code Playgroud)

但我真的不确定这是正确的做法......

谢谢 !

python pyramid deform colander

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

有没有办法使用doctest和sphinx来测试和记录命令行应用程序?

我有一个Python模块,我正在使用Sphinx编写教程,包括doctests.

这个模块附带了一些帮助程序.

我想在文档中包含这些帮助程序,让doctest检查标准输出是否在当前程序版本和文档之间同步.

我想我可以使用sh模块或popen来检查给定程序的标准输出,但我更喜欢那些技巧不会显示在文档中,否则非程序员用户肯定会丢失.

有没有办法实现这一目标?

python doctest subprocess command-line-interface python-sphinx

8
推荐指数
1
解决办法
325
查看次数

如何正确地对[模板化] C++程序进行基准测试

<backgound>

我真的需要优化C++代码.我正在为分子模拟编写一个库,我需要添加一个新功能.我过去曾尝试添加此功能,但之后我使用了嵌套循环中调用的虚函数.我对此感到不满,第一次实施证明这是一个坏主意.然而,这对于测试概念是可以的.

</ background>

现在我需要这个功能尽可能快(没有汇编代码或GPU计算,这仍然必须是C++,更可读而不是更少).现在我对模板和类策略有了更多了解(来自Alexandrescu的优秀书籍),我认为编译时代码生成可能是解决方案.

但是,在完成将其实现到库中的巨大工作之前,我需要测试设计.问题是测试这个新功能的效率的最佳方法.

显然我需要改进优化,因为没有这个g ++(以及可能还有其他编译器)会在目标代码中保留一些不必要的操作.我还需要大量使用基准测试中的新功能,因为1e-3秒的增量可以区分好的和坏的设计(在真实程序中这个功能将被称为百万倍).

问题是g ++在优化时有时"太聪明",如果考虑到从未使用计算结果,可以删除整个循环.我在查看输出汇编代码时已经看过了.

如果我向stdout添加一些打印,那么编译器将被强制在循环中进行计算,但我可能主要是对iostream实现进行基准测试.

那么如何对从库中提取的小特征进行正确的基准测试呢?相关问题:在小型装置上进行这种体外试验是正确的方法还是我需要整个背景?

谢谢你的建议!


似乎有几种策略,从特定于编译器的选项,允许微调到更通用的解决方案,应该适用于每个编译器,如volatileextern.

我想我会尝试所有这些.非常感谢您的所有答案!

c++ optimization benchmarking

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

是否可以在MongoDB之上实现多版本并发控制(MVCC)?

MongoDB对我来说是一个很棒的数据库.但是,有些情况下我确实需要原子多文档事务.例如,在账户之间转移资金(如金钱或信誉),这需要完全成功或完全失败.

我想知道是否可以通过实现MultiVersion并发控制模式的库与MongoDB进行交互.

表演有多糟糕?使用混合方法是否可行且有利可图,仅在必要时使用"mongo-mvcc"库,而在仅处理单个文档时使用传统的数据库连接还是会破坏mvcc的内容?

transactions mvcc mongodb nosql

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

在金字塔中使用尾部斜杠的路线

假设我有一条'/ foo/bar/baz'路线.我还希望有另一个对应于'/ foo'或'/ foo /'的视图.但是我不想系统地为其他路径添加尾部斜杠,仅用于/ foo和其他几个(/ buz但不是/ biz)

从我看到的我不能简单地定义具有相同route_name的两个路由.我目前这样做:

config.add_route('foo', '/foo')
config.add_route('foo_slash', '/foo/')
config.add_view(lambda _,__: HTTPFound('/foo'), route_name='foo_slash')
Run Code Online (Sandbox Code Playgroud)

金字塔中有更优雅的东西吗?

python url-routing pyramid

7
推荐指数
2
解决办法
2674
查看次数

我在哪里可以找到sqlalchemy-migrate的好例子或教程

这个帖子中,有人指出我使用sqlalchemy-migrate来帮助使用sqlalchemy快速变化的Web应用程序.但是,还建议使用" 自己动手"方法,包括手动为新数据库模式编写CSV列,最后导入它们.

问题是我无法找到sqlalchemy-migrate的真实示例.我发现的资源最多只需要添加一个列或一列重命名.官方文档基本上描述了API,很难看到如何有效地使用迁移.从文档中我甚至不知道迁移是否有助于更改数据库引擎,例如从sqlite到mysql,而DIY解决方案可以完成工作.

我真的希望看到代码可以对数据库模式进行一些非平凡的转换,并证明迁移确实是一个有用的工具.

我在哪里可以找到sqlalchemy-migrate的好例子/教程?

谢谢 !

pylons data-migration sqlalchemy sqlalchemy-migrate

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

在jinja2中为未定义的属性引发异常

我需要以下内容来引发异常:

jinja2.Template("Hello {{ a.x }}").render(a={})
Run Code Online (Sandbox Code Playgroud)

Jinja2以静默方式返回一个空字符串a.x,因此呈现为"Hello".

如何让jinja2在未定义的属性上引发异常?

python jinja2

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

如何在nginx代理后面的金字塔服务器中获取客户端的真实IP

我有一个金字塔应用程序,request.environ['REMOTE_ADDR']在某些地方使用.

该应用程序由端口6543上的Python Paste提供,而端口80上的nginx服务器将请求转发到Paste服务器.

nginx配置的灵感来自Pyramid食谱:

server {

    listen   80; ## listen for ipv4
    listen   [::]:80 default ipv6only=on; ## listen for ipv6

    server_name  localhost;

    access_log  /var/log/nginx/localhost.access.log;

    location / {

        proxy_set_header        Host $host;
        proxy_set_header        X-Real-IP $remote_addr;
        proxy_set_header        X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header        X-Forwarded-Proto $scheme;
        proxy_pass http://127.0.0.1:6543;

    }
Run Code Online (Sandbox Code Playgroud)

在Pyramid应用程序中,变量request.environ ['REMOTE_ADDR']现在始终等于127.0.0.1.我看到了一些解决这个问题的策略,但我不知道是否有推荐的方法来解决这个问题.

这是我正在考虑的事情:

  • 添加一个NewRequest订户,如有必要,它将替换request.environ ['REMOTE_ADDR']:

    if 'HTTP_X_REAL_IP' in event.request.environ: event.request.environ['REMOTE_ADDR'] = event.request.environ['HTTP_X_REAL_IP']

  • 在点击金字塔图层之前使用wsgi中间件修改request.environ.

  • 别的

您使用哪种策略来部署Pyramid应用程序?如果我有两个nginx代理会怎么样?(第一个服务于LAN,第二个服务器直接连接到互联网).

python deployment wsgi nginx pyramid

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

对我自己的谷歌日历的永久编程访问

我需要访问我自己的谷歌日历。oauth2 的东西更有可能被设计为允许访问其他人的日历。有没有办法获得我自己的日历的永久凭据?

编辑:

为了澄清一下,我正在编写一个需要以自定义方式显示日历事件的网站,而仅通过包含 iframe 是不可能的。Web 后端采用 Python 编写,我需要该后端从我的日历中获取事件列表,进行一些过滤并显示这些事件。事件列表必须自动与日历同步(但我计划使用缓存来减少对 google API 的请求数量)。

我设法获得了 oath2 令牌,但它有一个到期日期(“expires_in”:3600)。令牌有一个刷新选项,但允许的刷新次数似乎有限制(请参阅https://developers.google.com/accounts/docs/OAuth2第 4 点。刷新令牌)。由于oauth2的目的主要是允许访问其他用户的日历,我想知道是否有另一种身份验证方案允许永久api访问我自己的日历。

python api credentials google-calendar-api

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

在C++中为尖头数据强制执行const?

让一个Foo类包含一些const和非const方法

struct Foo
{
    Foo ();
    ~Foo();

    void noSideEffect() const;
    void withSideEffect();

};
Run Code Online (Sandbox Code Playgroud)

我也有一个Bar类,需要以Foo某种方式引用.更确切地说,对于这个问题可能过于精确,Bar实现了运算符||以及&&联合和交集,因此两个Bar实例需要知道它们是在同一个实例上运行的Foo.

我找到的最简单的解决方案是使用指向Foo对象的指针:

struct Bar
{

   Foo * p_foo;

   Bar (Foo& foo)
     : p_foo(&foo) {};

}
Run Code Online (Sandbox Code Playgroud)

现在两个bar实例可以一起播放,看看它们是否都处理相同的Foo.我快乐了.

但是现在我想有时使用Bar和const Foo实例.嗯,这可能很容易,我只需创建一个const Bar实例,对吧?我们去:

const Bar createBarFromConstFoo(const Foo& foo)
{
   Foo* newfoo = const_cast<Foo*>(&foo);
   const Bar newbar (*newfoo);
   return newbar;
}
Run Code Online (Sandbox Code Playgroud)

现在噩梦开始了(请参阅为什么C++不对指针数据强制执行const?).我想我理解为什么(标准是这样说的),我的主要问题是如何最好地应对它.

除了这个小标准的东西,createBarFomConstFoo几乎完成了我想要的东西,因为它返回了一个const Bar …

c++ oop pointers const

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