我是从纯粹的热情中学习Django的,我似乎很难理解Django的一些核心原则,这些原则确实让我头疼,我试着在网上搜索和阅读文档,但我似乎并不完全理解。我只想简单地回答问题,尽量说清楚。我为我说的任何蠢话道歉。我只是想把我的知识弄清楚。
1.什么是“请求”?
好的,所以我正在考虑对网页的GET请求,但是在网上我看到了类似于self.request.user.is_superuser的python代码,我想到的是一个获取并显示到模板中的用户对象,我可以将用户方法应用到模板中。显然,这一要求比我已经知道的要多。
2. CBV是在方法中构建的。得到的方法。他们是怎么执行的?按什么顺序.
我注意到程序员有时会覆盖这些方法。如果我在CBV中重新定义了多个方法,我就会开始产生奇怪的行为。
例如,如果我在一个详细视图中声明和重新定义了2个方法,那么在调用视图之后,将首先执行其中的get_object()和get_queryset()?作为一个方法,应该以某种方式调用它来执行,但是如果有多个CBV,我不知道这些方法是如何被调用的。也许我应该只定义其中一个,而不是两者都定义。
3. Queryset.是单子吗?
我有一个ideea查询集,您可以将过滤器应用到它们,但是它们返回什么?他们会返回我正在查询的模型的对象吗?
那么,如果我有一个DetailView CBV并重写了get_queryset()方法,这个方法会返回对象并将它传递给我的模板吗?这里我使用的是过滤器,但如果没有使用过滤器呢?CBV会返回什么?它会返回整个对象集吗?
class UserDetailView(LoginRequiredMixin,DetailView):
context_object_name='user_detail'
model=models.User
template_name='basicapp/user_detail.html'
def get_queryset(self, *args, **kwargs):
qs = super().get_queryset(*args, **kwargs)
if not self.request.user.is_superuser:
qs = qs.filter(pk=self.request.user.pk)
return qs4.请您推荐一本可以清楚解释查询集、CBV方法和ORM的Udemy课程、视频课程或书籍吗?
最好是视频,因为当我看到代码起作用时,它会产生很大的影响。
问题是,我理解MVT机制是如何工作的,但是这些在方法中构建并重写它们的类给我带来了很多问题。我以前从未遇到过它们,当我开始使用它们时,我感觉就像在黑暗中行走一样。
很抱歉寄了这么长的邮筒。谢谢
发布于 2020-06-30 19:27:18
request?这是一个对象[Django-doc]。这是一个包含客户端向服务器发出请求的数据的对象。例如,它包含一个属性[Django-doc],该属性包含一个字符串,如'GET'、'POST'、'PATCH'等,这些字符串指定使用的请求方法。
但是在网上,我看到了像
self.request.user.is_superuser这样的python代码,我想到了一个User对象,它被取出并显示到模板中,我可以将用户方法应用到模板中。
可以安装[Django-doc],这是一种预处理请求的工具,也可以是后置处理响应的工具。通常,默认情况下,[Django-doc]将添加到settings.py文件中。这将向延迟加载已登录用户的请求添加一个额外的属性.user。如果要删除此中间件,则.user属性将不再存在。
这取决于特定的基于类的视图。但是,文档指定了如何执行大多数方法。例如,对于[Django-doc],文档中提到了方法流程图
方法流程图
setup()dispatch()http_method_not_allowed()get_template_names()get_queryset()get_context_object_name()get_context_data()get()render_to_response()它还链接到解释这些方法的方法。
本质上,每个基于类的视图都可以有get、post、put、patch等方法。根据请求的方法,请求被发送给同名的方法。
No..QuerySet是一个或多或少表示可以在数据库上执行的查询的对象。QuerySets很懒。这意味着,只要您不对它们进行迭代,或者例如调用len(…),它们就不会进行查询。如果对这些内容进行迭代等,它们将对数据库进行查询,然后遍历查询的结果。结果通常被包装在模型对象中(除非使用像[Django-doc]或[Django-doc]这样的函数)。
从Django教程开始可能会有帮助。一步一步地超越Django的架构。关于QuerySet API的文档解释了如何生成查询集。页上给出了如何进行更高级查询的示例。最后,Django文档还有一个页面上的基于类的视图。。
https://stackoverflow.com/questions/62664648
复制相似问题