小编blu*_*ank的帖子

*args,**jinja2宏中的kwargs

如何为Jinja2宏处理额外的args和kwargs?文档不是很清楚.

例如,这显然是错误的:

{% macro example_1(one, two, **kwargs) %}
    do macro stuff
{% endmacro %}
Run Code Online (Sandbox Code Playgroud)

结果

jinja2.exceptions.TemplateSyntaxError

TemplateSyntaxError: expected token 'name', got '**'
Run Code Online (Sandbox Code Playgroud)

文件说:

kwargs

varargs但是关键字参数.所有未使用的关键字参数都存储在此特殊变量中.

不幸的是,任何额外关键字参数的组合都是错误,

{% macro example_2(one, two) %}
    do macro stuff
{% endmacro %}

{{ example_2(one, two, test='test') }}

TypeError: macro 'example_2' takes no keyword keyword argument 'test'
Run Code Online (Sandbox Code Playgroud)

我没有例子,也没有在Jinja2源代码atm中讨论.此时我不清楚文档.任何想法都赞赏.

python macros jinja2

56
推荐指数
1
解决办法
9170
查看次数

使用Carrierwave重命名上传的文件

我正在使用Carrierwave上传文件,我有它的工作.

我的问题是尝试更改上传文件的名称.

在生成的uploader.rb中有一个我认为我应该使用的方法

def filename
   "something.jpg" if original_filename
   basename = "what"+orginal_filename if original_filename, works
   basename = (0...8).map{65.+(rand(25)).chr}.join if original_filename  # will create a random name for each version, e.g. the orginal, the thumb, and the filename in the db, useless
 end
Run Code Online (Sandbox Code Playgroud)

我似乎无法访问sanitized_file.rb中的'extension'或'content_type'之类的项目,因此这有点超出我目前的技能水平.

这样做的任何建议或练习,即为上传的文件生成文件名,该文件与carrierwave默认值一样(什么都不做,但是会继续执行每个版本)?看起来它应该很简单,但我偶然发现了这一点.

ruby file-upload ruby-on-rails carrierwave

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

flask:error_handler用于蓝图

可以为蓝图设置error_handler吗?

@blueprint.errorhandler(404)
def page_not_found(error):
    return 'This page does not exist', 404
Run Code Online (Sandbox Code Playgroud)

编辑:

https://github.com/mitsuhiko/flask/blob/18413ed1bf08261acf6d40f8ba65a98ae586bb29/flask/blueprints.py

您可以指定应用程序范围和蓝图本地error_handler

blueprint flask http-status-code-404

23
推荐指数
2
解决办法
9222
查看次数

模型和实例方法:会话感知(sqlalchemy)

所以,使用和学习sqlalchemy.

我有一个实例,我需要得到一个值.如果该值存在,则返回它.如果不计算并返回它.

总有人会说"你做错了",总的来说,对改进的投入是值得赞赏的.但是,我正在研究如何在不明确管理会话的情况下完成此操作,因为我正在开发的工作正在开始增长,并且在我想要更新实例时不断管理会话是有问题的.这让我觉得我其实这样做是错误的.

那么如何修复下面的方法以不明确管理会话?

def method(self, session):
        if self.i_needed_this is None:
            self.i_needed_this = calculate(calcutron)
            session.add(self)
            session.commit()
            return self.i_needed_this                        
        else:
            return self.i_needed_this
Run Code Online (Sandbox Code Playgroud)

也许这个问题应该标题为"让实例会话意识到所以我并不总是明确地管理它",如果这是一个愚蠢的问题,至少告诉我为什么用例子并指出我其他人要求更好的地方.

编辑:显然,导入我正在使用作品的会话,它是可用的,所以也许它是一个非问题或未来的,当我更熟练的sqlalchemy.

python sqlalchemy

15
推荐指数
2
解决办法
8923
查看次数

使用backbone.js的无限/​​无限滚动类型解决方案

我正在使用backbone.js,我想知道是否有更简洁的解决方案来创建模型/集合的"无限滚动"情况,而不是我一直在寻找的模块(有几个可能是jquery,可能更多其他图书馆).

有些搜索几乎没有出现,所以我想在尝试用骨干构建自己的解决方案之前我会问,如果我应该在骨干集合之外构建一些东西,或者是否有人尝试过类似的东西.

jquery backbone.js infinite-scroll

14
推荐指数
1
解决办法
1万
查看次数

在烧瓶蓝图中使用烧瓶扩展

我想创建一个蓝图; 我当前的蓝图不是问题.我可以做这个.

但是,我想在我的应用程序中使用烧瓶扩展(对于我的情况,我想集成flask-Cache)?

到目前为止我所做的一切都有错误:

  • cache = Cache(my_blueprint)

  • 以不同的形式导入Cache和Cache的各个部分

所以像flask-cache这样的东西很简单,可以包裹我的app:

from flask.ext.cache import Cache
cache = Cache(app)
Run Code Online (Sandbox Code Playgroud)

但是在蓝图中使用它或使用蓝图我现在还不太明白.

编辑:不太明显的解决方案是从扩展程序中删除并构建我自己的库以导入蓝图,但这是更多的工作,我还没有完成.扩展/蓝图似乎与我现在的理解水平不兼容.

python flask

12
推荐指数
1
解决办法
5015
查看次数

nltk标记化和收缩

我用nltk标记文本,只是将句子输入wordpunct_tokenizer.这会分裂收缩(例如'不要'到'不'+"'"+'t'),但我希望将它们保持为一个单词.我正在改进我的方法以获得更加精确和精确的文本标记化,因此我需要深入研究nltk标记化模块,而不仅仅是简单的标记化.

我猜这很常见,我想要其他人的反馈,他们之前可能不得不处理这个问题.

编辑:

是的,这是一个普遍的,泼溅的问题,我知道

另外,作为nlp的新手,我是否需要担心收缩?

编辑:

SExprTokenizer或TreeBankWordTokenizer似乎正在做我现在正在寻找的东西.

python nlp nltk

12
推荐指数
1
解决办法
7960
查看次数

Jinja2模板宏中的NamedTuples

传奇继续,从原始线程延伸.

所以,我有一些东西在python代码中制作宏:

from flask import get_template_attribute
from jinja2 import Template

    class InternalMacro(object):
        """
        Creates a macro given a name, internal macro text, and content to fill(as namedtuple(t.var), dict(k,v), list(i), or other)
        """
        def __init__(self, name = None,
                           text = None,
                           content_is = None):
            self.name = name
            self.macro_name = "{}_template".format(self.name)
            self.macro_var = "{}_macro".format(self.name)
            self.text = text
            self.content_is = content_is
            self.macro_txt = self.format_text

        @property
        def is_tuple(self):
            return "{{% macro {0}(t) %}}{1}{{% endmacro %}}".format(self.macro_var, self.text)

        @property
        def is_dict(self):
            return "{{% macro …
Run Code Online (Sandbox Code Playgroud)

python templates jinja2

12
推荐指数
1
解决办法
1950
查看次数

YAML中的RSA公钥/私钥

我需要在YAML文件中存储一个RSA密钥对,但是对yaml语法的理解仍然有限且缺乏示例让我寻找答案.

我将开始研究我所拥有的东西,但我想知道是否有人能够快速而简洁地解释如何在yaml中存储这种性质的东西.

yaml rsa key

10
推荐指数
4
解决办法
8673
查看次数

Sqlalchemy mixins /和事件监听器

我正在尝试同时处理2件新事物,因此我们非常感谢您在简化和澄清方面的帮助.

from sqlalchemy.ext.declarative import declared_attr
from sqlalchemy import Column, Float, event

class TimeStampMixin(object):

    @declared_attr
    def __tablename__(cls):
        return cls.__name__.lower()

    created = Column(Float)
    modified = Column(Float)
    def __init__(self, created = None,
                       modified = None):
        self.created = created
        self.modified = modified

def create_time(mapper, connection, target):
    target.created = time()

#def modified_time(mapper, connection, target):
#    target.modified = time()

event.listen(TimeStampMixin, 'before_insert', create_time)
#event.listen(TimeStampMixin, 'before_update', modified_time)
Run Code Online (Sandbox Code Playgroud)

所以我想创建一个我可以在任何类中应用的mixin:

class MyClass(TimeStampMixin, Base):
    etc, etc, etc
Run Code Online (Sandbox Code Playgroud)

此类继承在创建时创建时间戳并在更新时创建/修改时间戳的功能.

在导入时我收到此错误:

raise exc.UnmappedClassError(class_)
sqlalchemy.orm.exc.UnmappedClassError: Class 'db.database.TimeStampMixin' is not mapped
Run Code Online (Sandbox Code Playgroud)

aaaand我在这一点上很难过.

python events model sqlalchemy

10
推荐指数
3
解决办法
4251
查看次数