Dictionary in django template

后端 未结 1 460
小鲜肉
小鲜肉 2021-01-05 01:03

I have a view like this:

info_dict =  [{u\'Question 1\': [\'13365\', \'13344\']}, {u\'Question 2\': [\'13365\']}, {u\'Question 3\': []}]

for key in info_dic         


        
相关标签:
1条回答
  • 2021-01-05 01:11

    In your view, you’ve only created one variable (profile_dict) to hold the profile dicts.

    In each iteration of your for f in profile loop, you’re re-creating that variable, and overwriting its value with a new dictionary. So when you include profile_dict in the context passed to the template, it holds the last value assigned to profile_dict.

    If you want to pass four profile_dicts to the template, you could do this in your view:

    info_dict =  [{u'Question 1': ['13365', '13344']}, {u'Question 2': ['13365']}, {u'Question 3': []}]
    
    # Create a list to hold the profile dicts
    profile_dicts = []
    
    for key in info_dict:
        for k, v in key.items():
            profile = User.objects.filter(id__in=v, is_active=True)
        for f in profile:
            wanted_fields = ['job', 'education', 'country', 'city','district','area']
            profile_dict = {}
            for w in wanted_fields:
                profile_dict[f._meta.get_field(w).verbose_name] = getattr(f, w).name
    
            # Add each profile dict to the list
            profile_dicts.append(profile_dict)
    
    # Pass the list of profile dicts to the template
    return render_to_response('survey.html',{
        'profile_dicts':profile_dicts,
    },context_instance=RequestContext(request))
    

    And then in your template:

    {% for profile_dict in profile_dicts %}
    <ul>
        {% for k, v in profile_dict.items %}
            <li>{{ k }} : {{ v }}</li>
        {% endfor %}
    </ul>
    {% endfor %}
    
    0 讨论(0)
提交回复
热议问题