没有很多具体的代码,这只是模糊的,但我会尽我所能.
给定一个rails引擎,一个基本引擎而不是自己空间中的可安装引擎,如何将应用程序中的方法作为应用程序控制器的before_filter提供给应用程序?
我一直在查看Devise代码,因为我想要的是与我对Devise的经历相似,但我承认我并不理解我所经历的很多内容.
我可以这样做,如果我把include Myengine::Mymodule应用程序控制器放在我想要的方法可用于过滤,但我希望可以只使用方法而不必包括模块.
这是尝试将rails应用程序转换为多个rails应用程序使用的引擎的最新障碍,并且对获取正确命名空间,模块配置等的任何指导表示赞赏.
我需要规定一个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指定的特定时间范围内(其中超出该限制会导致请求和禁止被删除).另外,我猜我需要更好地将一个机械化实例集成到我的班级,任何关于它的指针也会受到赞赏.
按照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.
我想在一个普通的容器宏或模板中渲染多个宏。使用伪代码:
宏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)是我想要的,但我现在还不太了解。任何输入,如果不清楚,我将如何澄清。
我正在尝试为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)
这是关闭的东西,我想用默认设置标题或覆盖,这是第一步有效
尝试将代码更新为 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) 我在db表中有一小组css项,我需要将其转换为要包含在页面中的css文件.我怎么能在Rails3中这样做?
有没有办法可以直接从stylesheet_link标签中调用它?我是否需要通过一些ruby来打开文件并将其输出到某个目录中?我在控制器中这样做吗?
css实际上是使用css与项目关联的自己的模型.
我不知道并找到一个尚未发现的解决方案,所以在这里问.
编辑:
看起来简单,我正在寻找一个或更少的解决方案,可能仍然,但这是一个简单的开始
我正在使用sqlalchemy,来自学习使用ruby/rails activerecord和datamapper的orm,它有点不同.
所以,有一些模型并需要我认为的类和实例级方法,我看到python没有这样做,或者到目前为止我对python的理解不会这样做.为模型构建新方法的pythonic方法是什么:装饰器,制作模块和导入方法等?我需要各种各样的东西,所以没有特定的编码问题,只是一般性请求指导有效的方法来处理模型sqlalchemy需要处理模型特定的方法.
注意:这不是讨论语言细节的邀请,我只提到我到目前为止所学到的内容,以及如何在新的情况下将其应用到应用程序中.
我有一个返回字典的函数:
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 ×6
flask ×3
jinja2 ×2
sqlalchemy ×2
templates ×2
conditional ×1
css ×1
dictionary ×1
key ×1
key-value ×1
macros ×1
mechanize ×1
module ×1
plugins ×1
python-2.7 ×1
ruby ×1