django字典for循环不打印任何内容

时间:2018-02-27 10:57:01

标签: django django-templates

关于django中的for循环已经有很多问题+答案,但没有一个解决方案对我有用,所以必定存在根本性的错误。

我在python / json(试过两个)中有一个字典,我想循环并打印。

执行以下操作为每个字符打印一个新行

 {% for item in data.dict %}
    <p>{{item}}</p>
 {% endfor %}

这样的东西可以打印

{
'
N
o
d
e
'
:

以下代码直接打印

{% for key, values in data.dict.items %}
   <p>{{key}}</p>
{% endfor %}

数据是我注册模型的名称,对象是其变量之一。 在我的Views.py中,我有类似的东西:

Data.objects.create(
        dict=theDictIAmPassing
}.save

修改

models.py

from django.db import models

class Data(models.Model):
    dict1= models.TextField()
    dict2 = models.TextField()
    dict3 = models.TextField()
    dict4 = models.TextField()

views.py

def add(request):

    if request.method == 'POST':

        form = EntryForm(request.POST)

        if form.is_valid():
            ProjectName = form.cleaned_data['ProjectName']
            date = form.cleaned_data['date']
            folder = form.cleaned_data['folder']
            description = form.cleaned_data['description']

            myprog = program.program(folder)
            createMetrics(myprog)

            Entry.objects.create(
                ProjectName=ProjectName,
                date=date,
                folder=folder,
                description=description
            ).save()

            return HttpResponseRedirect('/')
    else:
        form = EntryForm()

    return render(request, 'myApp/form.html', {'form': form})


def createMetrics(myprog):
    Metrics.objects.create(
        dict1=myprog.getDict1(),
        dict2=myprog.getDict2(),
        dict3=myprog.getDict3(),
        dict4=myprog.getDict4()
    ).save()

1 个答案:

答案 0 :(得分:1)

https://stackoverflow.com/a/7469287/7761401

找到解决方案

我需要重写我的数据模型。 Textfield(我之所以使用它是因为我找不到其他合适的东西)不适合字典类型。而是安装django-picklefield并将类型更改为PickledObjectField

from picklefield.fields import PickledObjectField

class Data(models.Model):
    dict1 = PickledObjectField()
    dict2 = PickledObjectField()
    dict3 = PickledObjectField()
    dict4 = PickledObjectField()