【问题标题】:Django TemplateView vs DetailViewDjango TemplateView 与 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 在上下文数据中?
【问题讨论】:
标签:
django
django-templates
【解决方案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,还要将此视图理解为一个新的资源 -> 产生一个几乎没有连接的新视图到用户视图(链接网址除外)。