小编blu*_*ank的帖子

一种从引擎到应用程序添加before_filter的方法

没有很多具体的代码,这只是模糊的,但我会尽我所能.

给定一个rails引擎,一个基本引擎而不是自己空间中的可安装引擎,如何将应用程序中的方法作为应用程序控制器的before_filter提供给应用程序?

我一直在查看Devise代码,因为我想要的是与我对Devise的经历相似,但我承认我并不理解我所经历的很多内容.

我可以这样做,如果我把include Myengine::Mymodule应用程序控制器放在我想要的方法可用于过滤,但我希望可以只使用方法而不必包括模块.

这是尝试将rails应用程序转换为多个rails应用程序使用的引擎的最新障碍,并且对获取正确命名空间,模块配置等的任何指导表示赞赏.

plugins module ruby-on-rails rails-engines ruby-on-rails-3

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

调节/限速红宝石机械化

我需要规定一个Mechanize实例与API连接的频率(每2秒一次,因此限制连接到那个或更多)

所以这:

instance.pre_connect_hooks << Proc.new { sleep 2 }
Run Code Online (Sandbox Code Playgroud)

我原以为这会起作用,而且它确实有点但是现在该类中的每个方法都会睡2秒钟,好像机械化实例被触摸并被告知保持2秒.我将尝试使用post connect钩子,但很明显我需要更复杂的东西,但是我不知道在这一点上是什么.

代码是更多的解释,所以如果你有兴趣跟随:https://github.com/blueblank/reddit_modbot,否则我的问题涉及如何有效和高效地将Mechanize实例的速率限制在API指定的特定时间范围内(其中超出该限制会导致请求和禁止被删除).另外,我猜我需要更好地将一个机械化实例集成到我的班级,任何关于它的指针也会受到赞赏.

ruby mechanize mechanize-ruby

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

Flask上下文处理器功能

按照Flask页面上的最小例子,我正在尝试构建一个上下文处理器:

context_procesor.py

def inflect_this():
    def inflectorize(number, word):
        return "{} {}".format(number, inflectorizor.plural(word, number))
    return dict(inflectorize=inflectorize)
Run Code Online (Sandbox Code Playgroud)

app.py(在app工厂内)

from context_processor import inflect_this

app.context_processor(inflect_this)
Run Code Online (Sandbox Code Playgroud)

使用先前的变形函数,根据数字变换一个单词,简单的我已经将它作为jinja过滤器,但想看看我是否可以将它作为上下文处理器.

鉴于此处页面引导的示例:http://flask.pocoo.org/docs/templating/ ,这应该有效,但不行.我明白了:

jinja2.exceptions.UndefinedError UndefinedError: 'inflectorize' is undefined
Run Code Online (Sandbox Code Playgroud)

我不明白你看到发生了什么.谁能告诉我有什么问题?

编辑:

app.jinja_env.globals.update(inflectorize=inflectorize)
Run Code Online (Sandbox Code Playgroud)

用于添加函数,并且似乎比在方法中包装方法的开销更少,其中app.context_processor可能无论如何都会转发到jinja_env.globals.

python flask python-2.7

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

Jinja2:说出“将此宏渲染到另一个宏或模板中”

我想在一个普通的容器宏或模板中渲染多个宏。使用伪代码:

宏1

宏2

宏3

容器

在模板中:

"render macro1 inside of Container" e.g. {{ macro1 with Container }}
Run Code Online (Sandbox Code Playgroud)

我不想每次都渲染容器,然后再渲染其中的宏,我只需要指定何时将此宏与另一个宏一起括起来

我认为'call'(http://jinja.pocoo.org/docs/templates/#macros)是我想要的,但我现在还不太了解。任何输入,如果不清楚,我将如何澄清。

python macros templates jinja2

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

Jinja2默认页面标题

我正在尝试为Flask应用程序中的所有页面设置默认页面标题.

我想将其插入默认布局模板.我的设置中有一个站点名称.

<title>{{title}}</title}}
Run Code Online (Sandbox Code Playgroud)

问题是,我似乎无法将设置中的站点名称导入布局模板.

<title>{{settings.SETTING}}</title}}
Run Code Online (Sandbox Code Playgroud)

和类似的变化不起作用.

是否有捷径可寻; 我不想让我的控制器中的每个动作都设置标题,逻辑方式是从我的设置到模板.我现在没有看到任何方式,任何输入赞赏.

编辑:

我不想写一个扩展,我看到我的应用程序的另一部分是使用扩展来将变量拉入模板,但是写一个完整的扩展程序有点超出了我当时的投资时间.

编辑:

def page_title(title):
    return settings.SITE_NAME

app.jinja_env.filters['page_title'] = page_title
Run Code Online (Sandbox Code Playgroud)

在模板中:

{{ title | page_title}} 
Run Code Online (Sandbox Code Playgroud)

这是关闭的东西,我想用默认设置标题或覆盖,这是第一步有效

python templates jinja2 flask

3
推荐指数
1
解决办法
3107
查看次数

sqlalchemy:TypeError:无法散列的类型创建实例,sqlalchemy

尝试将代码更新为 https://github.com/thrisp/flask-security从python 2.7到3.3时出现错误

给出以下最基本的实例

test.py:

from flask import Flask
from flask.ext.sqlalchemy import SQLAlchemy
from flask.ext.security import Security, UserMixin, RoleMixin, \
     SQLAlchemyUserDatastore

app = Flask(__name__)
app.config['SQLALCHEMY_DATABASE_URI'] = 'sqlite://'

db = SQLAlchemy(app)
db.drop_all()

roles_users = db.Table('roles_users',
        db.Column('user_id', db.Integer(), db.ForeignKey('user.id')),
        db.Column('role_id', db.Integer(), db.ForeignKey('role.id')))

class Role(db.Model, RoleMixin):
        id = db.Column(db.Integer(), primary_key=True)
        name = db.Column(db.String(80), unique=True)
        description = db.Column(db.String(255))

class User(db.Model, UserMixin):
    id = db.Column(db.Integer, primary_key=True)
    email = db.Column(db.String(255), unique=True)
    password = db.Column(db.String(255))
    last_login_at = db.Column(db.DateTime())
    current_login_at = db.Column(db.DateTime())
    last_login_ip = db.Column(db.String(100))
    current_login_ip = …
Run Code Online (Sandbox Code Playgroud)

python sqlalchemy flask flask-sqlalchemy

3
推荐指数
1
解决办法
3119
查看次数

从db到css文件?

我在db表中有一小组css项,我需要将其转换为要包含在页面中的css文件.我怎么能在Rails3中这样做?

有没有办法可以直接从stylesheet_link标签中调用它?我是否需要通过一些ruby来打开文件并将其输出到某个目录中?我在控制器中这样做吗?

css实际上是使用css与项目关联的自己的模型.

我不知道并找到一个尚未发现的解决方案,所以在这里问.

编辑:

看起来简单,我正在寻找一个或更少的解决方案,可能仍然,但这是一个简单的开始

css ruby-on-rails ruby-on-rails-3

2
推荐指数
1
解决办法
1165
查看次数

处理sqlalchemy模型的pythonic方式

我正在使用sqlalchemy,来自学习使用ruby/rails activerecord和datamapper的orm,它有点不同.

所以,有一些模型并需要我认为的类和实例级方法,我看到python没有这样做,或者到目前为止我对python的理解不会这样做.为模型构建新方法的pythonic方法是什么:装饰器,制作模块和导入方法等?我需要各种各样的东西,所以没有特定的编码问题,只是一般性请求指导有效的方法来处理模型sqlalchemy需要处理模型特定的方法.

注意:这不是讨论语言细节的邀请,我只提到我到目前为止所学到的内容,以及如何在新的情况下将其应用到应用程序中.

python sqlalchemy

2
推荐指数
1
解决办法
1680
查看次数

dict创建中的可选字典项

我有一个返回字典的函数:

 def to_dict(self):
     return dict({'identification': self.identifier,
                  'information': self.information,
                  'nodes': {e.position: e.to_dict for e in self.children}
                  })
Run Code Online (Sandbox Code Playgroud)

有没有办法可选择添加每个k/v?这不起作用,例如:

def to_dict(self):
         return dict({'identification': self.identifier,
                      'information': self.information,
                      'nodes': {e.position: e.to_dict for e in self.children} if self.children
                      })
Run Code Online (Sandbox Code Playgroud)

有没有办法添加dict创建的可选部分,而无需为每个变体构建单独的字典; 是否有更好的方法来做到这一点?

python conditional dictionary key key-value

2
推荐指数
1
解决办法
773
查看次数