django - 处理请求的两种方式——只是写法不同
问题描述
我在 github 上查看了一些不同的代码,发现了一些令人困惑的东西。下面的代码有什么区别吗?
class RandomView(View):
def get(self, *args, **kwargs):
return render(self.request, 'random_template.html)
相对
class RandomView(View):
def get(self, request, *args, **kwargs):
return render(request, 'random_template.html)
对我来说,这会做同样的事情,但公平地说,我的知识非常有限。一种被认为是不好的做法吗?或者也许只是偏好?
解决方案
它们指向同一个对象。self.request 在从 View.as_view() 返回的工厂函数中分配。我猜想显式传递请求参数的原因是为了更容易在基于类的视图和函数视图之间进行转换。并且也更加明确了get等方法使用了request对象。
我建议您遵循 django 源代码和文档中的示例中的约定,并使用作为参数传递的请求而不是 self.request。
推荐阅读
- php - 如何检查mysql更新查询是否成功?
- python - Pandas 条形图到 numpy 数组
- python - 多处理是否支持命名管道(FIFO)?
- python - 循环遍历大型 .tif 堆栈(图像光栅)并提取位置
- android - Github 推送失败:失败并出现错误:RPC 失败;curl 56 LibreSSL SSL_read:错误:140943FC:SSL 例程:SSL3_READ_BYTES:sslv3
- python - Python SQLite3 / 从表中选择行
- android - 当我从微调器中选择一个项目时,它不显示,但它被选中
- android - Firebase 部署错误
- node.js - 如果 spawn() 和 fork() 在同一个项目节点 js 中使用?
- google-apps-script - 从内容/背景脚本执行 Google App 脚本