django 渲染丢弃上下文值

阿雷凯

早上好 Django 社区:

我有一个奇怪的context问题。

我使用一个函数get_context_data返回一个字典,我将它加载到render. 我正在向我的context字典中添加值,这些值一旦在我的模板中呈现就不太容易访问。

网址模式:

url(r'^view_tutors/(?P<pk>[0-9]+)/$', ModelInstanceView.as_view(), {'model': Tutor,
            'model_two': TutorEvent}, name='view_tutors'),

视图.py:

    class ModelInstanceView(LoginRequiredMixin, DetailView):
        """
        This view shows all information specific to one instance
        of a model.
        Needs extra functionality for tutors whose info is much more complicated
        """

    def get_model_instance_dict(self, pk, model):
        fields = []
        self.model = model
        for field in list(self.model._meta.get_fields()):
            if hasattr(field, 'verbose_name'):
                fields.append(field.verbose_name)
            elif isinstance(field, ManyToOneRel):
                pass
            else:
                fields.append(str(field).split(':')[-1].split('.')[-1])
#        try:
        values = list(self.model.objects.values_list().filter(pk=pk)[0])
        print values
        if hasattr(self.model, 'related_set'):  # ?
            fields.append('Tutors at this Site')
            related_values = self.model.objects.get(gg=pk).related_set.all()
            tutors_at_site = ''
            for x in range(len(related_values)):
                tutors_at_site += str(related_values[x].first_name + ' ' + related_values[x].last_name + ', ')
            values.append(tutors_at_site[:-2])
        model_instance_dict = OrderedDict(zip(fields, values))
        # except IndexError:  # no record for the pk
        #     model_instance_dict = None
        return model_instance_dict

    def get_context_data(self, pk, **kwargs):
        model = self.kwargs['model']
        print 'THE MODEL 0', model, type(model)
        context = {
            "model_name": str(model.__name__),
            "model_select": model.objects.get(pk=pk),
            "model": self.get_model_instance_dict(pk, model),
            "id": pk,
        }
        if model.__name__ == 'Tutor':
            events = self.kwargs['model_two']
            context["edit_model_url"] = 'edit_' + str(model.__name__).lower(),
            context["events_name"] = str(events.__name__),
            context["events"] = events.objects.filter(tutor_id=pk).values()
            context["edit_events_url"] = 'edit_' + str(events.__name__).lower(),
            context["create_events_url"] = 'create_' + str(events.__name__).lower()
        print context
        return context

    def get(self, request, pk, **kwargs):
        return render(request, 'athena_app/model_detail.html', {'output': self.get_context_data(pk)})

模型细节模板:

{% debug %}

                <table border="2" class="tablemodel">
         <style>

              .model_row:hover {
                background-color: #e8d2f7;
                cursor: pointer;
              }
              .model {
                text-align: center;
              }
            </style>
            {{ output.events }}

            <tr>
              <th class="col-md-2">Event</th>
              <th class="col-md-2">Event Date</th>
            </tr>
            {% for event in output.events %}
                <tr class="model_row" onclick="document.location='/{{ output.edit_events_url }}/{{ id }}'">
                    <!-- <td>{{ output.event }}</td> -->
                    <td>{{ output.event.tutor_id }}</td>
                    <td>{{ output.event }}</td>
                </tr>
              {% empty %}
                <li>This tutor has not attended any events.</li>
            {% endfor %}
          </table>

我可以将上下文字典变量作为调试打印到我的终端中,并在context['events']. 但是,在模板中,{debug} 'events'键返回空值。我可以{ output.events }在模板中打印字典列表,但我无法以任何方式遍历它,正如您将在模板中看到的那样。

您可以提供的任何专业帮助将不胜感激。

丹尼尔罗斯曼

你正确地迭代 output.eventsevent作为你的循环变量。但出于某种原因,您在循环内部使用output.event. 它应该是:

    {% for event in output.events %}
            <tr class="model_row" onclick="document.location='/{{ output.edit_events_url }}/{{ id }}'">
                <!-- <td>{{ event }}</td> -->
                <td>{{ event.tutor_id }}</td>
                <td>{{ event }}</td>
            </tr>
    ...

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

将上下文值发送到Django中渲染的所有模板,而无需在每个视图中发送上下文

来自分类Dev

Django上下文渲染-django.template.base.VariableDoesNotExist:密钥查找失败

来自分类Dev

获取django渲染通过上下文参数传递的python生成的html?

来自分类Dev

Django中的上下文是什么?

来自分类Dev

django通过响应上下文无

来自分类Dev

比较上下文变量django

来自分类Dev

Django上下文字典DRY

来自分类Dev

Django模板上下文错误

来自分类Dev

与包含的模板django共享上下文

来自分类Dev

django继承上下文变量

来自分类Dev

Django模板上下文未显示

来自分类Dev

Django 模板上下文对象的目的?

来自分类Dev

Django 传递上下文

来自分类Dev

Django 模板上下文不会呈现

来自分类Dev

在基于Django类的视图中从上下文数据设置初始formfield值

来自分类Dev

将值从装饰器传递到Django中的上下文处理器

来自分类Dev

在基于Django类的视图中从上下文数据设置初始formfield值

来自分类Dev

如何在Django上下文中迭代字典中的元组值

来自分类Dev

Django CMS插件上下文与页面上下文

来自分类Dev

Django:使用Admin上下文扩展基于类的视图的上下文

来自分类Dev

Django在外壳中时无法呈现上下文

来自分类Dev

在Django中的视图之间共享上下文?

来自分类Dev

Django FormView没有表单上下文

来自分类Dev

django rest框架-请求上下文密钥错误

来自分类Dev

Django重定向,但传递表单错误上下文

来自分类Dev

Django-使用上下文重定向

来自分类Dev

Django中的上下文沉重视图

来自分类Dev

Django-类内属性的上下文字典

来自分类Dev

django generic.listview中的额外上下文

Related 相关文章

热门标签

归档