Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 上下文值似乎没有传递到Django中的ListView?_Python_Django - Fatal编程技术网

Python 上下文值似乎没有传递到Django中的ListView?

Python 上下文值似乎没有传递到Django中的ListView?,python,django,Python,Django,我正在学习Django 1.7教程。 我从web复制了代码,然后运行它。我遇到两个问题: 添加继承ListView的IndexView后,127.0.0.1:8000/polls页面只返回“无可用的轮询”,而不返回任何数据库项。我对基于类的视图感到困惑,似乎上下文值没有传递给模板。 ------------->解决了,这是我愚蠢的打字错误。 get_queryset(),用于什么,当调用此方法时,此方法如何映射到上下文?这个函数如何知道上下文映射,如果有两个上下文和两个值呢 有人能给我一些指导吗

我正在学习Django 1.7教程。 我从web复制了代码,然后运行它。我遇到两个问题:

  • 添加继承ListView的IndexView后,127.0.0.1:8000/polls页面只返回“无可用的轮询”,而不返回任何数据库项。我对基于类的视图感到困惑,似乎上下文值没有传递给模板。 ------------->解决了,这是我愚蠢的打字错误。
  • get_queryset(),用于什么,当调用此方法时,此方法如何映射到上下文?这个函数如何知道上下文映射,如果有两个上下文和两个值呢
  • 有人能给我一些指导吗?非常感谢

    轮询/url.py

        from django.conf.urls import patterns, url
    
        from . import views
    
        urlpatterns = patterns('',
            url(r'^$', views.IndexView.as_view(), name='index'),
            #url(r'^$', views.index, name='index'),  #this url works
            url(r'^(?P<pk>\d+)/$', views.DetailView.as_view(), name='detail'),
            url(r'^(?P<pk>\d+)/results/$', views.ResultsView.as_view(), name='results'),
            url(r'^(?P<question_id>\d+)/vote/$', views.vote, name='vote'),
        )
    
    polls/index.html

            {% if latest_question_list %}    <!-- seems here value is not passed by -->
                <ul>
                {% for question in latest_question_list %}
                    <li>
                        {{ question.question_text }}</li>
                {% endfor %}
                </ul>
            {% else %}
                <p>{{ latest_question_list }}</p>
                <p>No polls are available.</p>    <!-- always display this -->
                <p>{{ latest_question_list }}</p>
            {% endif %}
    
    {%if最新问题列表%}
    
      {最新问题列表%中的问题%
    • {{question.question_text}
    • {%endfor%}
    {%else%} {{最新问题列表}

    没有可用的投票。

    {{最新问题列表}

    {%endif%}
    数据库

    >>> from polls.models import Question
    >>> Question.objects.all()
    [<Question: What's up?>, <Question: tttt>]
    
    >>来自polls.models导入问题
    >>>问题.对象.全部()
    
    [P>既然Django是开源的,就可以通过代码> > CONTXEXObjistNo.<代码>变量来确定“代码> QueReSET/<代码>如何在模板中可用。 调用
    get
    方法时,Django使用
    get\u queryset()
    初始化
    self.object\u list
    。然后,它调用
    get\u context\u data()
    并将上下文数据传递给模板


    MultipleObjectMixin.get\u context\u data
    返回一个包含
    name->variable
    对的字典。它创建一个对
    get\u context\u object\u name()<代码> > ObjistaList,这就是为什么您可以使用定义的<代码> CONTXEXObjistNo.<代码> No.< /P> < P>访问您的列表,因为Django是开源的,可以通过代码> > CONTXEXObjistNo.<代码>变量来确定“代码> QueReSET/<代码>如何在模板中可用。/p>
    调用
    get
    方法时,Django使用
    get\u queryset()
    初始化
    self.object\u list
    。然后,它调用
    get\u context\u data()
    并将上下文数据传递给模板


    MultipleObjectMixin.get\u context\u data
    返回一个包含
    name->variable
    对的字典。它创建一个对
    get\u context\u object\u name()<代码> > ObjistaList,这就是为什么您可以使用定义的<代码> CONTXEXObjistNo.<代码> No.< /P> < P>访问您的列表,因为Django是开源的,可以通过代码> > CONTXEXObjistNo.<代码>变量来确定“代码> QueReSET/<代码>如何在模板中可用。/p>
    调用
    get
    方法时,Django使用
    get\u queryset()
    初始化
    self.object\u list
    。然后,它调用
    get\u context\u data()
    并将上下文数据传递给模板


    MultipleObjectMixin.get\u context\u data
    返回一个包含
    name->variable
    对的字典。它创建一个对
    get\u context\u object\u name()<代码> > ObjistaList,这就是为什么您可以使用定义的<代码> CONTXEXObjistNo.<代码> No.< /P> < P>访问您的列表,因为Django是开源的,可以通过代码> > CONTXEXObjistNo.<代码>变量来确定“代码> QueReSET/<代码>如何在模板中可用。/p>
    调用
    get
    方法时,Django使用
    get\u queryset()
    初始化
    self.object\u list
    。然后,它调用
    get\u context\u data()
    并将上下文数据传递给模板


    MultipleObjectMixin.get\u context\u data
    返回一个包含
    name->variable
    对的字典。它创建一个对
    get\u context\u object\u name()
    ->
    object\u list
    ,这就是为什么您可以使用定义的
    context\u object\u name
    name来访问列表。

    基于类的视图通过提供大量预烘焙的代码,使开发人员的任务变得更加容易。
    ListView
    用于返回对象列表。ListView与所有其他视图一样,是从
    扩展而来的View
    View
    实现了一个
    get\u context\u data
    方法,该方法传递要在模板中使用的数据。因此,现在如果检查ListView的
    get\u context\u data
    方法,我们会发现:

    def get_context_data(self, **kwargs):
        """
        Get the context for this view.
        """
        queryset = kwargs.pop('object_list', self.object_list)
        page_size = self.get_paginate_by(queryset)
        context_object_name = self.get_context_object_name(queryset)
        if page_size:
            paginator, page, queryset, is_paginated = self.paginate_queryset(queryset, page_size)
            context = {
                    'paginator': paginator,
                    'page_obj': page,
                    'is_paginated': is_paginated,
                    'object_list': queryset
                }
        else:
            context = {
                    'paginator': None,
                    'page_obj': None,
                    'is_paginated': False,
                    'object_list': queryset
                }
        if context_object_name is not None:
            context[context_object_name] = queryset
            context.update(kwargs)
            return super(MultipleObjectMixin, self).get_context_data(**context)
    
    如您所见,object_list设置为queryset,或者如果您提供了context_object_name,则将其设置为queryset。queryset由您定义的
    get_queryset
    设置


    我希望这能使过程变得清晰。

    基于类的视图通过提供大量预烘焙的代码,使开发人员的任务变得更加容易。
    列表视图
    用于返回对象列表。列表视图与所有其他视图一样,是从
    视图
    视图
    扩展而来的,它实现了一个
    获取上下文数据
    的方法,即p评估模板中要使用的数据。因此,现在如果检查ListView的
    get\u context\u data
    方法,我们会发现:

    def get_context_data(self, **kwargs):
        """
        Get the context for this view.
        """
        queryset = kwargs.pop('object_list', self.object_list)
        page_size = self.get_paginate_by(queryset)
        context_object_name = self.get_context_object_name(queryset)
        if page_size:
            paginator, page, queryset, is_paginated = self.paginate_queryset(queryset, page_size)
            context = {
                    'paginator': paginator,
                    'page_obj': page,
                    'is_paginated': is_paginated,
                    'object_list': queryset
                }
        else:
            context = {
                    'paginator': None,
                    'page_obj': None,
                    'is_paginated': False,
                    'object_list': queryset
                }
        if context_object_name is not None:
            context[context_object_name] = queryset
            context.update(kwargs)
            return super(MultipleObjectMixin, self).get_context_data(**context)
    
    如您所见,object_list设置为queryset,或者如果您提供了context_object_name,则将其设置为queryset。queryset由您定义的
    get_queryset
    设置


    我希望这能使过程变得清晰。

    基于类的视图通过提供大量预烘焙的代码,使开发人员的任务变得更加容易。
    列表视图
    用于返回对象列表。列表视图与所有其他视图一样,是从
    视图
    视图
    扩展而来的,它实现了一个
    获取上下文数据
    的方法,即p评估模板中要使用的数据。因此,现在如果检查
    get\u context\u data
    def get_context_data(self, **kwargs):
        """
        Get the context for this view.
        """
        queryset = kwargs.pop('object_list', self.object_list)
        page_size = self.get_paginate_by(queryset)
        context_object_name = self.get_context_object_name(queryset)
        if page_size:
            paginator, page, queryset, is_paginated = self.paginate_queryset(queryset, page_size)
            context = {
                    'paginator': paginator,
                    'page_obj': page,
                    'is_paginated': is_paginated,
                    'object_list': queryset
                }
        else:
            context = {
                    'paginator': None,
                    'page_obj': None,
                    'is_paginated': False,
                    'object_list': queryset
                }
        if context_object_name is not None:
            context[context_object_name] = queryset
            context.update(kwargs)
            return super(MultipleObjectMixin, self).get_context_data(**context)