在view.py中:
class DisplayView(generic.ListView):
def get(self, request, **kwargs):
if request.method == "GET":
selection = request.GET.getlist("selection") # list of checkbox values with name 'selection
articles = Article.objects.all()
args = {'articles': articles, 'selection': selection}
print(selection)
print(articles)
return render(request, 'display.html', args)
在display.html中:
{% extends 'myapp/base.html' %}
{%block contentblock %}
{% for section in selection %}
<h1>{{ section }}</h1>
<script language="javascript">console.log(selection)</script>
{% endfor %}
{% endblock %}
我可以在终端上看到“选择”和“文章”打印,这意味着视图正确地从复选框中获取数据。 但是,我的html中没有出现任何内容,console.log会抛出错误,意味着数据未传递给模板... 为什么呢?
答案 0 :(得分:3)
对于脚本,您需要添加括号:
$sele = "SELECT * FROM ".$country." WHERE name LIKE '%".$name."%'";
答案 1 :(得分:1)
更改此行
return render(request, display.html, args)
到
return render(request, 'display.html', args)
介意html是在模板内部而不是在任何其他子文件夹中,如果子文件夹在那里添加文件夹名称在单引号内
并在模板中
{% extends 'myapp/base.html' %}
{% block contentblock %}
<script language="javascript">console.log({{ selection }})</script>
{% for section in selection %}
<h1>{{ section }}</h1>
<script language="javascript">console.log({{ articles }})</script>
{% for article in articles %}
<h2>{{ article }}<h2>
{% endfor %}
{% endfor %}
{% endblock %}
答案 2 :(得分:0)
首先,你应该为选择部分添加{%endfor%},你使用两个for循环。其次,您需要在返回渲染中添加''到模板名称