栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

何时在Django中使用get,get_queryset,get_context_data?

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

何时在Django中使用get,get_queryset,get_context_data?

他们确实做了不同的事情。

get()

这是一个最高级的方法,而且也为每个HTTP动词- ,,

get()
等你会当你想之前请求由视图或后处理做点什么覆盖它。但这仅在第一次加载表单视图时才调用,而不是在提交表单时调用。文档中的基本示例。默认情况下,它将仅呈现配置的模板并返回HTML。
post()patch()

class MyView(TemplateView):    # ... other methods    def get(self, *args, **kwargs):        print('Processing GET request')        resp = super().get(*args, **kwargs)        print('Finished processing GET request')        return resp

get_queryset()

ListViews
使用-它确定要显示的对象列表。默认情况下,它只会为你指定的模型提供全部功能。通过覆盖此方法,你可以扩展或完全替换此逻辑。有关该主题的Django文档。

class FilteredAuthorView(ListView):    template_name = 'authors.html'    model = Author    def get_queryset(self):        # original qs        qs = super().get_queryset()         # filter by a variable captured from url, for example        return qs.filter(name__startswith=self.kwargs['name'])get_context_data()

此方法用于填充字典以用作模板上下文。例如,ListViews将get_queryset()像author_list上面的示例一样填充的结果。你可能最经常重写此方法,以添加要显示在模板中的内容。

def get_context_data(self, **kwargs):    data = super().get_context_data(**kwargs)    data['page_title'] = 'Authors'    return data

然后,在模板中,你可以引用这些变量。

<h1>{{ page_title }}</h1><ul>{% for author in author_list %}    <li>{{ author.name }}</li>{% endfor %}</ul>

现在回答你的主要问题,你之所以拥有如此众多的方法,是为了让你轻松地精确定位你的自定义逻辑。它不仅使你的代码更具可读性和模块化,而且更具可测试性。



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/407764.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号