当 Django views.py 没有将字典值传递给 html 时如何解决?

Posted

技术标签:

【中文标题】当 Django views.py 没有将字典值传递给 html 时如何解决?【英文标题】:How to solve when Django views.py is not passing the dictionary value to html? 【发布时间】:2020-07-30 22:02:18 【问题描述】:

我在 views.py 中有一个字典值并将其呈现到前端。当我在 html 中遍历字典时,只显示一个值,而其他值不显示。这可能是什么问题?

views.py

def Student_Create(request):
    form = Student_Model_Form(request.POST or None)
    # get class names and days
    classes = Create_Class.objects.all()
    cls = 
    for i in classes:
        cls[i] = 
            'class_name': i.class_name,
            'from_day': str(i.from_days),
            'to_day': str(i.to_days),
            'from_time': i.from_time.strftime("%H:%M:%S"),
            'to_time': i.to_time.strftime("%H:%M:%S"),
        
    print(cls)
    template_name = 'genius/students_create.html'
    context = 'form': form, 'classes': cls
    return render(request, template_name, context)

student.html

<div class="form-group">
  <label for="select-class">Select Class</label>
  <select class="custom-select" multiple name="select-class">
     % for i in classes%
      <option value="i.class_name">i.class_name : i.from_day-i.to_day</option>
     % endfor %
  </select>
</div>

而最终的输出是这样的。

See The Output

您的帮助将不胜感激。

【问题讨论】:

【参考方案1】:

您可以使用列表来存储数据:

...
cls = []  # Change from dict to list.
for i in classes:
    cls.append(
        'class_name': i.class_name,
        'from_day': str(i.from_days),
        'to_day': str(i.to_days),
        'from_time': i.from_time.strftime("%H:%M:%S"),
        'to_time': i.to_time.strftime("%H:%M:%S"),
    )
...

【讨论】:

哦,是的,我忘记了列表。谢谢【参考方案2】:

而不是像上面那样创建字典。你可以做 视图.py

def Student_Create(request):
    form = Student_Model_Form(request.POST or None)
    # get class names and days
    classes = Create_Class.objects.values_list('class_name', 'from_days', 'to_days' ,'from_time', 'to_time', flat=True)
    template_name = 'genius/students_create.html'
    context = 'form': form, 'classes': classes
    return render(request, template_name, context)


【讨论】:

这可能是更好的解决方案,代码更少。谢谢! @VikrantAgrahari,您可以投票或接受该解决方案。 我接受这个解决方案。我猜我不能为声誉低下的原因投票。

以上是关于当 Django views.py 没有将字典值传递给 html 时如何解决?的主要内容,如果未能解决你的问题,请参考以下文章

如何在 django 中声明一个数据库驱动的字典,该字典可在模板中全局访问,而不依赖于 views.py

从 django views.py 获取数据并使用 ajax 显示它

如何通过 Ajax jQuery 将简单数据发送到 Django 中的views.py?

当socket server和views.py分成两个文件时,如何通过Django视图发送套接字消息?

6)django-实例(fbv)

如何从views.py文件将数据插入django数据库?