Django TemplateView 与 DetailView

Posted

技术标签:

【中文标题】Django TemplateView 与 DetailView【英文标题】:Django TemplateView vs DetailView 【发布时间】:2018-03-13 16:16:29 【问题描述】:

我正在开发一个应用程序,该应用程序具有多个用户配置文件模型,OneToOne 字段为 auth.User。对于特定类型的配置文件仪表板,例如 VendorSales,最好的做法是编写一个在 url 中获取 VendorSales ID 的 DetailView,或者只使用没有 url pk 的 TemplateView 并在模板和 self 中引用 request.user.vendorsales .request.user.vendorsales 在上下文数据中?

【问题讨论】:

【参考方案1】:

当您使用 DetailView 时,您不需要在 URL 中使用主键或 slug -- 您可以覆盖 get_object 并通过 self.request.user 访问对象。

def get_object(self):
    return self.request.user.vendorsales

无论您使用DetailView 还是TemplateView,您都可能会发现LoginRequiredMixin 对限制对视图的访问很有用。

【讨论】:

【参考方案2】:

如果您希望您的视图能够在重新加载时使用,您应该在 url 中添加某种 id。

如果您希望以 RESTfull 方式为您的应用程序/api 建模,那么您不仅应该考虑放入一个 url,还要将此视图理解为一个新的资源 -> 产生一个几乎没有连接的新视图到用户视图(链接网址除外)。

【讨论】:

以上是关于Django TemplateView 与 DetailView的主要内容,如果未能解决你的问题,请参考以下文章

Django:使用TemplateView在Django表单中添加编辑和删除功能的问题

TemplateView中的Django分页?

在 Django 中使用 TemplateView 时设置 Mimetype

authenticate()和login()实现用户登录 | Django

get_template_names(self) 在 TemplateView 中不起作用

简单的用户注册|登录|修改密码|邮箱激活 |Django