我希望复制Pinterest.com的div布局,特别是如何调整列数以适应更多/更少的浏览器调整大小,垂直堆叠不依赖于相邻的列高度.源代码显示每个div都是绝对位置.联合创始人回答了一个Quora帖子,说明它是用自定义jQuery和CSS完成的.我希望结果从左到右排序.您可以提供任何方向来自己制作它将非常感激.
我的蓝图瓶应用程序周围的许多路线需要将"侧边栏数据"发送给jinja.
我正在寻找最有效的方法来做到这一点.它们必须比将'generate_sidebar_data()'函数导入每个蓝图更好,反复说:
var1, var2, var3 = generate_sidebar_data()
Run Code Online (Sandbox Code Playgroud)
然后使用'render_template'发送它们:
return render_template('template.html',
var1=var1,
var2=var2,
var3=var3
)
Run Code Online (Sandbox Code Playgroud)
我想要的是一个装饰器,我可以使用与上述相同的路径(运行函数并将变量发送给jinja),但我不知道这是否可行.如何从装饰器函数内部向jinja发送变量?
@blueprint.route('/')
@include_sidebar_data
def frontpage():
return render_template('template.html')
Run Code Online (Sandbox Code Playgroud) 我正在使用Flask,我发现它可能是一个相当优雅的解决方案,通过简单地session['next'] = request.url在我的应用程序的每个端点放置一个重定向到登录/注销后的用户的最后一页,并让我的登录/注销功能重定向到到session.get('next').如果启用,这甚至类似于Flask-Login扩展中的选项USE_SESSION_FOR_NEXT.
我想确认这是一个安全的工作流程,但我不能确定是否有任何方法可以欺骗request.url,或者如果我仍然要在重定向之前验证下一个url,如下所示:
有没有理由不采用这种方法?它似乎是一个很好,干净,简单的解决方案,可以保持URL的清洁,最大限度地减少字段/处理,并消除了打开重定向攻击的漏洞,如果您没有采取额外的步骤来验证下一个URL.有什么收获?
我正在考虑一个论坛类型系统,它允许用户在没有帐户但通过电子邮件验证的情况下发布/编辑帖子.
因此,您需要填写表单,提供电子邮件地址,提交,然后在电子邮件中收到"激活"您帖子的链接.编辑也一样.点击"修改",接收带链接的电子邮件,链接带您进行编辑.
我正在努力了解安全地执行此操作的确切步骤.如何创建一段时间后过期的链接?我如何确保它来自电子邮件地址,而不仅仅是一些机器人循环通过潜在的网址?
任何帮助开始正确的方向表示赞赏.
在烧瓶蓝图中,我有:
frontend = Blueprint('frontend', __name__)
Run Code Online (Sandbox Code Playgroud)
和我的索引功能的路线是:
@frontend.route('/')
def index():
#code
Run Code Online (Sandbox Code Playgroud)
这工作正常但是,我试图在路由中添加子域,如下所示:
@frontend.route('/', subdomain='<var>')
def index(var):
Run Code Online (Sandbox Code Playgroud)
但这打破了应用程序,浏览器吐出(除其他外):
werkzeug.routing.BuildError
BuildError: ('frontend.index', {}, None)
Run Code Online (Sandbox Code Playgroud)
我的代码在url_for('frontend.index')中的几个地方调用frontend.index
当我包含子域时,如何让url_for工作?在http://flask.pocoo.org/docs/api/下,我能找到的文件中唯一可能与之相关的内容是:
为了集成应用程序,Flask有一个钩子来拦截通过Flask.build_error_handler拦截URL构建错误.当前应用程序没有给定端点和值的URL时,url_for函数会导致BuildError.如果是这样,current_app会调用它的build_error_handler,如果它不是None,它可以返回一个字符串,用作url_for的结果(而不是url_for的默认值引发BuildError异常)或重新引发异常.一个例子:
def external_url_handler(error, endpoint, **values):
"Looks up an external URL when `url_for` cannot build a URL."
# This is an example of hooking the build_error_handler.
# Here, lookup_url is some utility function you've built
# which looks up the endpoint in some external URL registry.
url = lookup_url(endpoint, **values)
if url is …Run Code Online (Sandbox Code Playgroud) 如果我知道一个特定的类只会用在div或p上,那么通过指定div.class或p.class而不仅仅是.class,对性能是否有最轻微的影响?
我正在尝试实现这个 Jinja nl2br过滤器.它正常工作,除了<br>它添加的它被转义.这对我来说很奇怪,因为<p>它们没有被转义并且它们都在同一个字符串中.
我正在使用烧瓶,因此autoescape启用了Jinja .当我发现这个人说autoescape并且escape(value)可能导致双重逃逸时,我真的很有希望,但删除escape()没有帮助.
这是我修改过的代码及其输出:
@app.template_filter()
@evalcontextfilter
def nl2br(eval_ctx, value):
_paragraph_re = re.compile(r'(?:\r\n|\r(?!\n)|\n){2,}')
result = u'\n\n'.join(u'<p>%s</p>' % escape(p.replace(u'\r\n', u'<br>\n')) for p in _paragraph_re.split(value))
if eval_ctx.autoescape:
result = Markup(result)
return result
Run Code Online (Sandbox Code Playgroud)
输入:
u'1\r\n2\r\n\r\n3\r\n4\r\n\r\n5\r\n6\r\n7'
Run Code Online (Sandbox Code Playgroud)
输出:
<p>1<br>
2</p>
<p>3<br>
4</p>
<p>5<br>
6<br>
7</p>
Run Code Online (Sandbox Code Playgroud)
期望的输出:
<p>1<br>2</p>
<p>3<br>4</p>
<p>5<br>6<br>7</p>
Run Code Online (Sandbox Code Playgroud)
什么可能导致<br>逃脱,但允许<p>的?
可以使用pip从git repo使用命令进行安装
pip install git+https://github.com/...
但这对生产环境是否安全?有没有办法保护它不被删除而不用它,托管自己,并合并任何未来的更新?
关于UTC日期时间转换有很多问题,似乎没有"最佳方式"的共识.
根据这个:http://lucumr.pocoo.org/2011/7/15/eppur-si-muove/,pytz是最好的方式.他表示转换到这样的时区,datetime.datetime.utcnow().replace(tzinfo=pytz.utc)但他没有说如何获得用户的时区......
这家伙/sf/answers/522575161/说" localize调整夏令时,replace不"
我看到使用pytz的每个人都提供他们自己的时区(users_timezone = timezone("US/Pacific")),我不明白,因为你不知道这是你的观众在哪里...
这个家伙/sf/answers/334021341/有一种自动检测时区的方法,但这是使用dateutil库,而不是像Armin Ronacher和官方python docs(http)所推荐的pytz ://docs.python.org/library/datetime.html#strftime-and-strptime-behavior,就在黄色框中的锚点上方)
我需要的是最简单,面向未来的全天候节省时间/等等,考虑采用我的datetime.utcnow()标记(2012-08-25 10:59:56.511479),将其转换为用户的时区.并显示如下:
Aug 25 - 10:59AM
Run Code Online (Sandbox Code Playgroud)
如果今年不是当年,我想说
Aug 25 '11 - 10:59AM
Run Code Online (Sandbox Code Playgroud) 我已经验证了dateutils.tz.tzlocal()在heroku上不起作用,即使它确实如此,它不会只是从计算机的操作系统中获取tz,而不是用户吗?
如果没有存储用户时区,有没有办法确定请求的来源?(我正在使用烧瓶)
Twitter确实有一个设置来调整你的时区,但我想知道他们如何确定默认值应该是什么以及当用户没有登录时它将如何工作.