我需要在YAML文件中存储一个RSA密钥对,但是对yaml语法的理解仍然有限且缺乏示例让我寻找答案.
我将开始研究我所拥有的东西,但我想知道是否有人能够快速而简洁地解释如何在yaml中存储这种性质的东西.
我正在寻找sqlalchemy模型的模型创建周期.例如,在创建或保存时(例如在Ruby ORM ActiveRecord中,实际上我正在将模型从ActiveRecord移动到SqlAlchemy).
事件看起来像我需要的:http://docs.sqlalchemy.org/en/rel_0_7/core/event.html,但我还没有找到更详细的例子.我想听听别人对此的体验.
sqlalchemy中是否有基于某些提示的模型/实例做事的类似设施,例如after_create?
我有一个我正在经历的命名元组列表,每个渲染要求略有不同,所以我想根据属性调用适当的宏.我有的是这个:
{% macro format_item(item) %}
{% if item.type_of == 'a' %}
{{ format_a(item) }}
{% elif item.type_of == 'b' %}
{{ format_b(item) }}
{% elif item.type_of == 'c'%}
{{ format_c(item) }}
{% elif item.type_of == 'd'%}
{{ format_d(item) }}
{% else %}
{{ format_general(item) }}
{% endif %}
{% endmacro %}
Run Code Online (Sandbox Code Playgroud)
但我想要的是:
...iterating through list of items
{{ call macro based off item.type_of }}
Run Code Online (Sandbox Code Playgroud)
在常规python的这一点上,我会做类似的事情
getattr(object_with_method_to_produce_templates, item)
Run Code Online (Sandbox Code Playgroud)
但是还没有找到一种有效使用attr过滤器的方法(如果我可以在这种情况下正确使用它).
我发现flask.get_template_attribute在其他地方寻找可能很有意思(如果我可以提前完成所有操作并将预先计算好的预先格式化的项目发送到模板).可能太多,超出了我此时想做的事情.
什么是从各种宏列表中调用的更好的方法,而不是将来可能会变得相当大的if列表?似乎是一个常见的问题,但我没有偶然发现我正在寻找的确切答案.
编辑:
我将此添加到我正在做的事情,尝试生成一个可调用的宏作为我想要渲染的项目的一部分
from flask import get_template_attribute
from jinja2 import Template …Run Code Online (Sandbox Code Playgroud) 我有一个生成的烧瓶应用程序,它给了我这个回溯:
Traceback (most recent call last):
File "/home/.virtualenvs/j/lib/python2.7/site-packages/flask/app.py", line 1701, in __call__
return self.wsgi_app(environ, start_response)
File "/home/.virtualenvs/j/lib/python2.7/site-packages/flask/app.py", line 1689, in wsgi_app
response = self.make_response(self.handle_exception(e))
File "/home/.virtualenvs/j/lib/python2.7/site-packages/flask/app.py", line 1687, in wsgi_app
response = self.full_dispatch_request()
File "/home/.virtualenvs/j/lib/python2.7/site-packages/flask/app.py", line 1360, in full_dispatch_request
rv = self.handle_user_exception(e)
File "/home/.virtualenvs/j/lib/python2.7/site-packages/flask/app.py", line 1358, in full_dispatch_request
rv = self.dispatch_request()
File "/home/.virtualenvs/j/lib/python2.7/site-packages/flask/app.py", line 1344, in dispatch_request
return self.view_functions[rule.endpoint](**req.view_args)
TypeError: 'str' object is not callable
Run Code Online (Sandbox Code Playgroud)
但目前我无法确定原因或原因。该应用程序启动并似乎正在运行,但每当我尝试访问路线时都会因此回溯而窒息。
这是什么以及什么会导致这种情况?我不知道什么对象是 str 以及为什么它不可调用。这是我第一次看到这样的事情。
在完成了烧瓶芹菜的基本示例之后(据我所知,运行正常)我正在尝试将其集成到我自己的项目中.基本上,我在下面使用这个:
from flask import Blueprint, jsonify, request, session
from flask.views import MethodView
from celery.decorators import task
blueprint = Blueprint('myapi', __name__)
class MyAPI(MethodView):
def get(self, tag):
return get_resource.apply_async(tag)
@task(name="get_task")
def get_resource(tag):
pass
Run Code Online (Sandbox Code Playgroud)
使用与示例中相同的设置,我收到此错误:
Traceback (most recent call last):
File "/x/venv/lib/python2.7/site-packages/flask/app.py", line 1518, in __call__
return self.wsgi_app(environ, start_response)
File "/x/venv/lib/python2.7/site-packages/flask/app.py", line 1506, in wsgi_app
response = self.make_response(self.handle_exception(e))
File "/x/venv/lib/python2.7/site-packages/flask/app.py", line 1504, in wsgi_app
response = self.full_dispatch_request()
File "/x/venv/lib/python2.7/site-packages/flask/app.py", line 1264, in full_dispatch_request
rv = self.handle_user_exception(e)
File "/x/venv/lib/python2.7/site-packages/flask/app.py", line 1262, in full_dispatch_request
rv …Run Code Online (Sandbox Code Playgroud) 在使用ruby一段时间后,我回到了python。我正在使用flask框架。
如何在执行控制器操作时实现过滤器以对请求运行方法,而不在每个控制器中放置相同的代码?我的第一个猜测是构造某种装饰器(例如@before_request,但乍一看似乎没有)。我刚刚熟悉(重新)了python,几乎没有什么东西可以触及的,因此感谢任何输入。等效于Rails中的before_filter或Sinatra中的before do方法。
我正在使用 wtforms,我需要创建一个可以根据数据库中的信息生成表单定义的东西;动态表单创建。我逐渐意识到需要做什么,而我才刚刚开始。我可以创建表单并将它们与 wtforms/flask 一起使用,但是根据数据定义表单(从表单到表单略有不同)目前超出了我目前的技能水平。
有没有人做过这个并提供一些意见?有点模糊的问题,还没有实际的代码。我还没有找到任何例子,但也不是不可能做到。
mass of variable data to be used in a form --> wtforms ---> form on webpage
Run Code Online (Sandbox Code Playgroud)
编辑:
因此,“例如”我们可以使用调查。一个调查由几个 SQLAlcehmy 模型组成。调查是具有任意数量关联问题模型的模型(问题属于调查,例如多项选择问题,它变得复杂)。为了简化,让我们使用简单的 json/dict 伪代码:
{survey:"Number One",
questions:{
question:{type:truefalse, field:"Is this true or false"},
question:{type:truefalse, field:"Is this true or false"},
question:{type:text, field:"Place your X here"}
}
}
{survey:"Number Two",
questions:{
question:{type:text, field:"Answer the question"},
question:{type:truefalse, field:"Is this true or false"},
question:{type:text, field:"Place your email address here"}
}
}
Run Code Online (Sandbox Code Playgroud)
想象一下,而不是这个,数百个不同长度的 5+ 字段类型。如何使用 WTForms 为此管理表单,或者我什至需要使用 wtforms?我可以根据需要定义静态表单,但不能动态定义。
顺便说一句,我在 rails 中使用 simpleform …
我有一系列正在使用的蓝图,我希望能够将它们进一步捆绑到一个包中,以便可以与任何其他数量的其他应用程序无缝地使用。一整套为应用程序提供整个引擎的蓝图。我创建了自己的解决方案,但是它是手动的,需要花费大量的精力才能有效。它似乎不像是一个扩展,它不止一个蓝图(有几个提供共同的功能)。
完成了吗 怎么样?
(将几个程序捆绑在一起的应用程序分派方法可能不是我想要的)
可能的重复:
在 jinja2 中使用包含文件中的块作为父级
一个基本模板:
{% include "include.html" %}
Run Code Online (Sandbox Code Playgroud)包含文件
{% block somethingnew %}{% endblock somethingnew %}
Run Code Online (Sandbox Code Playgroud)一个模板
{% extends "basictemplate.html" %}
{% block somethingnew %} HEY LOOK AT ME {% endblock somethingnew %}
Run Code Online (Sandbox Code Playgroud)3 不会从布局中渲染包含文件的块。我有一个更复杂的示例,例如,我尝试将主布局分解为多个包含文件,并具有自己的块,例如导航块或内容块,但扩展该布局的模板无法将信息放入包含文件中的块中。我有点明白为什么会这样,但是有没有办法解决这个问题呢?我的主布局文件变得越来越大,我想将其切成更易于管理的部分,每个部分都包含自己的块。如果可以的话,我该怎么做?
我在csv模块(Python 2.7)中掌握DictWriter时遇到了困难.我有这个(哦,我正在使用unicodecsv库因为我读过有问题):
f = object_instance.return_a_dictionary.keys()
with open('eggs.csv', 'wb') as csvfile:
spamwriter = unicodecsv.DictWriter(csvfile, fieldnames=f)
spamwriter.writerows(object_instance.return_a_dictionary)
Run Code Online (Sandbox Code Playgroud)
所以我传入了我的对象实例.f是:
[u'n6s2f0e1', u'n1s0f0e0', u'n2s0f0e1', u'n3s1f0e0', u'n5s2f0e0', u'n4s1f0e1']
Run Code Online (Sandbox Code Playgroud)
object_instance.return_a_dictionary是:
{u'n6s2f0e1': u'stuff', u'n1s0f0e0': u'stuff', u'n2s0f0e1': u'stuff', u'n3s1f0e0': u'stuff', u'n5s2f0e0': u'stuff', u'n4s1f0e1': u'stuff'}
Run Code Online (Sandbox Code Playgroud)
所以我真的想要第一排:
stuff stuff stuff stuff stuff
Run Code Online (Sandbox Code Playgroud)
我的印象是,作家通过提供的字典,使用提供的dictwriter字段名称调用所提供的字典的键名,并输出值.
相反,我得到:
Traceback (most recent call last):
File "<stdin>", line 3, in <module>
File "/usr/lib/python2.7/csv.py", line 153, in writerows
rows.append(self._dict_to_list(rowdict))
>>> File "/usr/lib/python2.7/csv.py", line 144, in _dict_to_list
", ".join(wrong_fields))
ValueError: dict contains fields not in fieldnames: n, 6, s, …Run Code Online (Sandbox Code Playgroud)