我在jinja2模板中有一些变量,这些变量是由';'分隔的字符串.
我需要在代码中单独使用这些字符串.即变量是variable1 ="green; blue"
{% list1 = {{ variable1 }}.split(';') %}
The grass is {{ list1[0] }} and the boat is {{ list1[1] }}
Run Code Online (Sandbox Code Playgroud)
我可以在渲染模板之前将它们拆分,但由于它有时在字符串中最多有10个字符串,因此会变得混乱.
在我做之前我有一个jsp:
<% String[] list1 = val.get("variable1").split(";");%>
The grass is <%= list1[0] %> and the boat is <%= list1[1] %>
Run Code Online (Sandbox Code Playgroud)
编辑:
它适用于:
{% set list1 = variable1.split(';') %}
The grass is {{ list1[0] }} and the boat is {{ list1[1] }}
Run Code Online (Sandbox Code Playgroud) 我在Flask中使用Jinja2.我想从字符串中呈现模板.我尝试了以下两种方法:
rtemplate = jinja2.Environment().from_string(myString)
data = rtemplate.render(**data)
Run Code Online (Sandbox Code Playgroud)
和
rtemplate = jinja2.Template(myString)
data = rtemplate.render(**data)
Run Code Online (Sandbox Code Playgroud)
但是两种方法都返回:
TypeError: no loader for this environment specified
Run Code Online (Sandbox Code Playgroud)
我检查了手册和这个网址:https://gist.github.com/wrunk/1317933
但是,在使用字符串时,没有指定选择加载器.
我有这个数据帧
id text
0 12 boats
1 14 bicycle
2 15 car
Run Code Online (Sandbox Code Playgroud)
现在我想在jinja2中做一个选择下拉列表.但我找不到在jinja2中循环数据帧的方法.
我尝试使用to_dict().但是{%for key,x.items()%}中的值
它遍历id和text而不是行.我怎样才能改变这个,所以我可以在模板中做这样的事情?
{% for key,value in x.items() %}
Run Code Online (Sandbox Code Playgroud)
编辑:
正如John Galt建议的那样:
{% for key,value in x.items() %}
<option value="{{ id }}">{{ text }}</option>
{% endfor %}
Run Code Online (Sandbox Code Playgroud) 我必须遵循问题。我需要检查某些网址是否正常工作并返回正确的响应。我想为此使用 python 请求。但是,如果设备或地理信息不正确,则 url 中会有重定向,我们需要检查移动站点和多个地理区域的大量 url。
有没有办法通过 Python 请求通过 VPN 工作?
编辑:我忘了提及,这是针对 ubuntu 14.04 服务器的。所以不是家用电脑。在我的笔记本电脑上,我使用 HideMyAss 和 IpVanish,但我想在我的服务器上运行一个 cron 作业来自动检查它。我不需要隐藏任何信息,所以我也可以使用代理。
我在jinja2中有一个变量:test1 ="这是value1,这是value2"
有:
{{ test1 | replace("value1","my_value1") }}
Run Code Online (Sandbox Code Playgroud)
我可以替换value1但我还需要替换value2我该怎么做?
我试过了:
{{ test1 | replace("value1","my_value1") | replace("value2","my_value2") }}
Run Code Online (Sandbox Code Playgroud)
但这只会取代value2.
我有一个具有以下结构的数据框:
0 1 2
0 0.00086076 500.00000000 []
1 0.00086075 819.00000000 []
2 0.00086072 1162.00000000 []
3 0.00086071 20.00000000 []
4 0.00086069 10170.00000000 []
5 0.00086067 18.00000000 []
Run Code Online (Sandbox Code Playgroud)
然后我有另一个带有更新值的数据框:
0 1 2
0 0.00086071 50.00000000 []
1 0.00086068 81.00000000 []
Run Code Online (Sandbox Code Playgroud)
它在第 0 列上排序,我需要将两者合并,如下所示:
0 1 2
0 0.00086076 500.00000000 []
1 0.00086075 819.00000000 []
2 0.00086072 1162.00000000 []
3 0.00086071 50.00000000 []
4 0.00086069 10170.00000000 []
5 0.00086068 81.00000000 []
6 0.00086067 18.00000000 []
Run Code Online (Sandbox Code Playgroud)
因此,如果某个值与第 0 列中的一个匹配,则应更新第 1 列,否则应插入新行并再次排序。
是否有有效的方法或预定义函数来执行此操作?
我想将整个pandas数据帧"插入忽略"到mysql中.有没有办法在没有循环行的情况下执行此操作?
在dataframe.to_sql中,我只看到if_exists'append'选项,但是这仍然会在重复的唯一键上继续吗?
我可以创建一个具有唯一索引或列的数据框,类似于在 mysql 中创建唯一键,如果我尝试添加重复索引,它会返回错误吗?
或者是我创建 if 语句并在附加之前检查数据帧中的值的唯一选择?
编辑:
看来我的问题有点不清楚。对于唯一列,我的意思是我们不能在列中具有非唯一值。
和
df.append(new_row, verify_integrity=True)
Run Code Online (Sandbox Code Playgroud)
我们可以检查所有列,但如何只检查一两列?
如何在Python线程安全的情况下将数据写入文件?我想为每个请求安全地将一些变量保存到文件中,每隔一小时我想要进行一些分组并将其写入mysql.
在Java中,我现在将它放在一个缓存的数组中,当数组已满时将其写入文件.
我怎么能用Python做到这一点?有许多并发请求,因此它必须是线程安全的.
编辑:
我们最终使用了正常工作的日志模块.
我想使用WTForms和Jinja2在Flask中创建不同的表单.我调用mysql,它具有字段类型.
所以即表可以是:
form_id | type | key | options | default_value
1 | TextField | title | | test1
1 | SelectField | gender |{'male','female'}|
2 | TextAreaField| text | | Hello, World!
Run Code Online (Sandbox Code Playgroud)
然后我在form_id上查询.然后我想创建一个带有WTforms的表单,其中包含返回的行的字段.
对于正常形式我做:
class MyForm(Form):
title = TextField('test1', [validators.Length(min=4, max=25)])
gender = SelectField('', choices=['male','female'])
def update_form(request):
form = MyForm(request.form)
if request.method == 'POST' and form.validate():
title = form.title.data
gender = form.gender.data
#do some updates with data
return .....
else:
return render_template('template.html',form)
#here should be something like:
#dict = …Run Code Online (Sandbox Code Playgroud)