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表单中添加编辑和删除功能的问题
在 Django 中使用 TemplateView 时设置 Mimetype
authenticate()和login()实现用户登录 | Django