我正在使用Rethinkdb 1.10.1与官方python驱动程序.我有一个与一个用户关联的标记事物表:
{
"id": "PK",
"user_id": "USER_PK",
"tags": ["list", "of", "strings"],
// Other fields...
}
Run Code Online (Sandbox Code Playgroud)
我想查询user_id和tag(比如,用标签"tag"查找用户"tawmas"的所有内容).从Rethinkdb 1.10开始,我可以像这样创建一个多索引:
r.table('things').index_create('tags', multi=True).run(conn)
Run Code Online (Sandbox Code Playgroud)
我的查询将是:
res = (r.table('things')
.get_all('TAG', index='tags')
.filter(r.row['user_id'] == 'USER_PK').run(conn))
Run Code Online (Sandbox Code Playgroud)
但是,此查询仍需要扫描具有给定标记的所有文档,因此我想基于user_id和tags字段创建复合索引.这样的索引允许我查询:
res = r.table('things').get_all(['USER_PK', 'TAG'], index='user_tags').run(conn)
Run Code Online (Sandbox Code Playgroud)
文档中没有关于复合多索引的内容.但是,我尝试使用自定义索引函数,通过返回对列表来["USER_PK", "tag"]组合复合索引和多索引的要求.
我的第一次尝试是在python中:
r.table('things').index_create(
'user_tags',
lambda each: [[each['user_id'], tag] for tag in each['tags']],
multi=True).run(conn)
Run Code Online (Sandbox Code Playgroud)
这使得python驱动程序扼杀了MemoryError试图解析索引函数(我猜驱动程序不支持列表推导).
所以,我转向我的(诚然,生锈的)javascript并想出了这个:
r.table('things').index_create(
'user_tags',
r.js(
"""(function (each) {
var result = [];
var user_id = each["user_id"];
var tags = each["tags"];
for (var i = …Run Code Online (Sandbox Code Playgroud) 我有一个显示模型列表的视图.在呈现视图之后,需要更新某些模型的某些属性:即,用户应该在第一次访问时看到原始的,未更改的值以及连续访问时(或页面重新加载时)的更新值.
我以为我可以通过基于类的通用视图来实现这一点.在官方文档暗示"之前或做一些额外的工作之后(重点煤矿)调用通用视图",但其显示之前给出的所有例子影响的模型.
我调查了信号,但无济于事.
产生异步任务是一种选择,但是,因为我需要做的就是更新几个模型中的字段(可能是一个或没有)并保存它们,这对于手头的任务来说似乎有些过分.
可以使用ajax请求来触发更新,或者使用自定义模板标记来显示相关字段并在此后更新它们.我不喜欢这两个,因为他们将应用程序逻辑移动到视图层.ajax技术还增加了第二个请求的开销.
然而,我似乎没有别的选择,或者我呢?是否有更实用的技术可以在渲染模板后插入通用视图或请求并执行额外的逻辑?
对于这个清单,
[{u'status': u'Active', u'name': u'X', u'orgID': u'109175', u'type': u'Created Section','class': 'addbold'} ,
{u'status': u'Active', u'name': u'A', u'orgID': u'109175', u'type': u'Created Section', 'class': 'addbold'} ,
{u'status': u'Active', u'name': u'G', u'orgID': u'109175', u'type': u'Created Section', 'class': 'addbold'} ,
{u'status': u'Active', u'name': u'D', u'orgID': u'109175', u'type': u'Created Section', 'class': 'addbold'}]
Run Code Online (Sandbox Code Playgroud)
我想根据字典的名称键按字母顺序排列列表项.
所以输出就像这样,
[{u'status': u'Active', u'type': u'Created Section', u'orgID': u'109175', u'name': u'A', 'class': 'addbold'} ,
{u'status': u'Active', u'type': u'Created Section', u'orgID': u'109175', u'name': u'D', 'class': 'addbold'} ,
{u'status': u'Active', u'type': u'Created Section', u'orgID': u'109175', …Run Code Online (Sandbox Code Playgroud) 我正在学习烧瓶.我理解为了生成静态文件的URL /static/style.css,我这样做url_for('static', filename='style.css').我也理解我可以使用模板生成HTML,用render_template('hello.html', name=name)它将返回jinja模板的HTML输出templates/hello.html.
但是,我不确定如何在jinja模板中返回指向静态文件的链接 - 或者如果这是我应该如何返回返回链接到静态HTML/CSS的HTML.
基本上,如何在jinja模板中返回到使用python动态生成的URL的链接?这似乎不可能.那人们做什么呢?如果您只是在模板中放置一个链接,它会查找静态文件host/URLThatDisplaysTemplate/PathToStaticFileInTheLink而不是host/PathToStaticFileInTheLink,这就是我想要的.
python ×3
dictionary ×1
django ×1
django-views ×1
flask ×1
jinja2 ×1
list ×1
rethinkdb ×1
sorting ×1
templates ×1