我在使用我构建的应用程序时遇到问题。基本上它的作用是如果它检测到字符串中的国家名称(submission.title),那么它将在标题后打印该国家的标志。因此,如果标题是“中国正在制造一枚火箭”。在火箭这个词后面会打印中国国旗。 问题是它不会打印多个标志。因此,如果标题是“中国和俄罗斯正在制造火箭”。它只会打印中国国旗或俄罗斯国旗。不是都。我希望它能够打印两个标志。
谢谢
Python脚本
SELECT sg.[id] ,
sg.[student_id] ,
sg.[test] ,
sg.[grade] ,
s.[first_name] ,
s.[last_name] ,
s.[email] ,
s.[phone] ,
s.[birthdate]
INTO TableA
FROM student_grades sg
JOIN students s ON sg.student_id = s.id;
HTML
news = []
i = 0
for submission in redditFunction(time, limit=int(num) ):
i += 1
for j in country: #j = country name
if j in submission.title:
flag = "static/flags/" + country[j].lower() + ".png"
news.append([str(i) + '. ' + submission.title, submission.url, flag] )
break
else:
news.append([str(i) + '. ' + submission.title, submission.url]) #no flag will be printed
return render_template("index.html", news=news)
答案 0 :(得分:1)
break
阻止您拥有所有标记。
由于每个项目可能有多个标记,因此您应使用list
在项目对象中保留相关的标记网址(您将其实现为list
)
查看强>
news = []
i = 0
for submission in redditFunction(time, limit=int(num)):
i += 1
# flags list will be empty in case of no match
flags = []
for j in country: #j = country name -- consider renaming 'j' to 'country_name'
if j in submission.title: # you may consider checking with lower()/upper()
flags.append("static/flags/" + country[j].lower() + ".png")
news.append([str(i) + '. ' + submission.title, submission.url, flags])
return render_template("index.html", news=news)
在模板中有一个标志列表,你只需要迭代它并为每个标志添加一个img元素。
<强>模板强>
{% for item in news %}
<h2>
<a href= "{{item[1]}}">{{item[0]}}</a>
{% for flag in index[2] %}
<img src= "{{ flag }}" style="width:25px;height:18.25px;">
{% endfor %}
</h2>
{% endfor %}
请注意,我没有测试过该解决方案,如果您遇到错误,请告诉我。
答案 1 :(得分:1)
我建议将此逻辑移到您的视图逻辑中并保持控制器简单。
# controller
return render_template('index.html',
submissions=redditFunction(time, limit=int(num)),
countries=countries)
# view
{% for submission in submissions %}
<h2>
<a href="{{ submission.url }}">{{loop.index}}. {{submission.title}}</a>
{% for country in countries %}
{% if country in submission.title %}
{% set country_path = 'flags/%s.jpg' % country %}
<img src={{ url_for('static', filename=country_path) }}>
{% endif %}
{% endfor %}
</h2>
{% endfor %}
这使您的视图逻辑更容易理解。否则,您必须返回以重新引用item[0]
和item[1]
。你也可以在Jinja得到一些不错的东西,如loop.index
来创建编号的标题。
我在Flask中进行了测试,看起来工作正常。