您的位置:

对于django错误VariableDoesNotExist("Failed lookup for key [%s] in %r",(bit, current),) # missing attribute的解决

  发布时间:2023-04-01 09:00:51
报错的原因是 Django 模板引擎中的一个常见错误。在模板中添加 {%debug%} ,Django 会输出一个有关上下文中所有变量的详细信息,可以帮助您更好地理解模板变量的值在模板中添加会在变量前加上一个前缀, 输出上下文中变量的值, 可以帮助您更好地理解模板变量的值通过使用 {%debug%} 或者 {% with %} 在模板中查看上下文中变量的值,可以帮助你更好地找到错误并解决问题。

报错的原因

"VariableDoesNotExist: Failed lookup for key [%s] in %r" 是 Django 模板引擎中的一个常见错误。它表明模板引擎在查找模板中的变量时无法找到该变量

这个错误可能由以下原因引起:

- 你在模板中使用了不存在的变量

- 你的视图函数没有传递给模板的所有需要的变量

- 你的模型字段名称或关系是错误的。

- 你在模板中使用了错误的变量名称。

解决这个错误,可以确保在模板中使用正确的变量名称,并确保你的视图函数传递给模板的所有需要的变量。如果你使用了自定义的模板标签,确保标签能够正确处理变量


#view
def my_view(request):
    data = {'name': 'John

Smith'}

return render(request, 'mytemplate.html', data)

#template

Welcome, {{ name }}


上面这个例子中我们在视图函数中传递了变量 "name",并在模板中使用了这个变量。如果你仍然无法解决这个错误,可以尝试检查你的模型字段名称或关系是否正确,或者检查视图函数是否正确传递了所有需要的变量。

希望这能帮助你解决问题

如何解决

解决这个错误的方法如下:

- 确保在模板中使用正确的变量名称,并确保你的视图函数传递给模板的所有需要的变量

- 如果你使用了自定义的模板标签,确保标签能够正确处理变量

- 检查你的模型字段名称或关系是否正确。

- 检查视图函数是否正确传递了所有需要的变量

- 可以在模板中使用 {%debug%} 或者 {% with %} 来查看上下文中变量的值来帮助找到错误。

总之,确保模板和视图中的变量名称正确,检查你的模型字段名称或关系是否正确,以及正确传递所有需要的变量是解决这个问题的最佳方式。

使用例子

是的,下面是一个简单的例子:


#models.py
class Person(models.Model):
    first_name = models.CharField(max_length=30)
    last_name = models.CharField(max_length=30)

#views.py
def my_view(request):
    person = Person.objects.get(first_name='John')
    return render(request, 'mytemplate.html', {'person': person})

#template

Welcome, {{ person.first_name }} {{ person.last_name }}

在这个例子中,我们正确地使用了person对象的 first_name 和 last_name 属性,那么就不会出现 "VariableDoesNotExist"错误了。

如果你仍然有问题,请提供相关的代码片段,我将会尽力协助你解决问题

在你的视图函数中使用 {%debug%} 或者 {% with %} 来查看上下文中变量的值,以帮助找到错误。

在模板中添加 {%debug%} ,Django 会输出一个有关上下文中所有变量的详细信息,可以帮助您更好地理解模板变量的值。


#template
{% debug %}

Welcome, {{ person.first_name }} {{ person.last_name }}

在模板中添加 {% with %} ,Django 会在变量前加上一个前缀, 输出上下文中变量的值, 可以帮助您更好地理解模板变量的值。


#template
{% with person_first=person.first_name person_last=person.last_name %}

Welcome, {{ person_first }} {{ person_last }}

{% endwith %}

通过使用 {%debug%} 或者 {% with %} 在模板中查看上下文中变量的值,可以帮助你更好地找到错误并解决问题。