Python 不能';就我所知,尽管已经准备好了所有内容,但我还是不能在模板中迭代字典上下文变量吗?

Python 不能';就我所知,尽管已经准备好了所有内容,但我还是不能在模板中迭代字典上下文变量吗?,python,django,dictionary,Python,Django,Dictionary,我试图迭代作为模板中的上下文变量传递的字典的键。但这只是没有发生。 当我把{{key}}放在模板中时,我得到了对应于该键的值,但无法迭代 logic.py global table table = {} for i in range(9): for j in range(9): key = 'i' key = key + str(i) + str(j) table[key] = 1 from django.shortcuts import re

我试图迭代作为模板中的上下文变量传递的字典的键。但这只是没有发生。 当我把{{key}}放在模板中时,我得到了对应于该键的值,但无法迭代

logic.py

global table
table = {}

for i in range(9):
   for j in range(9):
       key = 'i'
       key = key + str(i) + str(j)
       table[key] = 1
from django.shortcuts import render
from .formss import SudokuForm, RealSudoku
from .logic import table
# Create your views here.

def sudokuf(request):
    title = "Sudoku Puzzle"

    if request.method == 'POST' :
       print(request.POST)
return render (request,"sudoku.html",table)
view.py

global table
table = {}

for i in range(9):
   for j in range(9):
       key = 'i'
       key = key + str(i) + str(j)
       table[key] = 1
from django.shortcuts import render
from .formss import SudokuForm, RealSudoku
from .logic import table
# Create your views here.

def sudokuf(request):
    title = "Sudoku Puzzle"

    if request.method == 'POST' :
       print(request.POST)
return render (request,"sudoku.html",table)
sudoku.html

<form method="POST" action=""> {% csrf_token %}

    {% for key,value in table.items %}
        {{ key }}:{{ values }}
    {% endfor %}

    {{ i04 }} # If I do this I get the value table['i04'] but not in the above  for loop

    <input type="submit" align="centre" value="Solve">
{%csrf\u令牌%}
{%表示键,表中的值为.items%}
{{key}}:{{values}
{%endfor%}
{{i04}}#如果我这样做,我会得到值表['i04'],但不在上面的for循环中

可能是您应该在
{{value}}
中使用
{{value}}

所以不是

{% for key,value in table.items %}
    {{ key }}:{{ values }}
{% endfor %}
试试看

{% for key,value in table.items %}
    {{ key }}:{{ value }}
{% endfor %}

很可能你有
{{values}}
你应该有
{{values}}

所以不是

{% for key,value in table.items %}
    {{ key }}:{{ values }}
{% endfor %}
试试看

{% for key,value in table.items %}
    {{ key }}:{{ value }}
{% endfor %}

render
的第三个参数是一个“上下文”,一个字典,它的键可以作为名称提供给HTML。您正在将
对象作为上下文传递,因此其键(如
i04
)可以作为变量使用。。。但是在您的表中没有名为
table
的键,因此名称
table
对HTML不可用

在view.py中更改此行:

return render (request,"sudoku.html",table)
致:

您将在HTML中提供名称
。(但是不是名称
i04

您还可以执行以下操作:

import logic
render(request, "sudoku.html", logic)
这将使
逻辑
模块中定义的所有名称都可用于HTML


如果对这个答案有什么不清楚的地方,请留下评论,让我知道,我会尝试进一步解释。

render的第三个参数是“context”,一个字典,它的键可以作为名称提供给HTML。您正在将
对象作为上下文传递,因此其键(如
i04
)可以作为变量使用。。。但是在您的表中没有名为
table
的键,因此名称
table
对HTML不可用

在view.py中更改此行:

return render (request,"sudoku.html",table)
致:

您将在HTML中提供名称
。(但是不是名称
i04

您还可以执行以下操作:

import logic
render(request, "sudoku.html", logic)
这将使
逻辑
模块中定义的所有名称都可用于HTML


如果对此答案有任何不清楚的地方,请留下评论并让我知道,我将尝试进一步解释。

是的,返回render(请求“sudoku.html”,{“table”:table})是正确的格式。非常感谢rmunn!!!!刚开始学习Django,非常感谢您的回答。它刚刚开始工作,将更深入地了解您的建议。谢谢您的时间。是的,返回render(请求“sudoku.html”,{“table”:table})是正确的格式。非常感谢rmunn!!!!刚开始学习Django,非常感谢您的回答。它刚刚开始工作,将更深入地了解您的建议。谢谢你的时间。除了我发布的答案之外,这个答案的一部分也是正确的:你的
{{key}:{{{{values}}
行应该是
{{key}:{{value}}
。然而,在x中说你不能为a,b做
的部分是错误的:特别提到你可以做那件事。@rmunn:ooh,谢谢你指出这一点。我会把它删掉。既然答案完全正确,我很乐意给它加1。@rmunn:I+1也是你的。:)事实上,我什么都没有得到,只有键,如果{{values}}是个问题,我至少应该得到{{key}。但没有更早。也谢谢你指出这一点!!除了我发布的答案之外,这个答案的一部分也是正确的:你的
{{key}}:{{{values}
行应该是
{{key}:{{value}}
。然而,在x中说你不能为a,b做
的部分是错误的:特别提到你可以做那件事。@rmunn:ooh,谢谢你指出这一点。我会把它删掉。既然答案完全正确,我很乐意给它加1。@rmunn:I+1也是你的。:)事实上,我什么都没有得到,只有键,如果{{values}}是个问题,我至少应该得到{{key}。但没有更早。也谢谢你指出这一点!!