【问题标题】:Django 2.1.2: Generic detail view SchoolDetailView must be called with either an object pk or a slug in the URLconfDjango 2.1.2:通用详细视图 SchoolDetailView 必须使用 URLconf 中的对象 pk 或 slug 调用
【发布时间】:2018-11-09 09:35:29
【问题描述】:

我是 django 新手,不明白什么是 pk 或 slug。怎么回事?

models.py:

class School(models.Model):
    name = models.CharField(max_length=256)
    principal = models.CharField(max_length=256)
    location = models.CharField(max_length=256)

    def __str__(self):
        return self.name

模板页面:

<a class="navbar-brand" href="{% url 'basic_app:list'%}">Schools</a>

urls.py:

path('',views.SchoolDetailView.as_view(),name='list'),

views.py:

class SchoolDetailView(DetailView):
    context_object_name = 'school_detail'
    model = models.School
    template_name = 'basic_app/school_detail.html'

【问题讨论】:

  • 你的困惑似乎比这更深;您正在混淆详细信息和列表。您想要所有学校的列表,还是一所学校的详细信息?但是如果你不了解 pks 或 slugs 那么你显然没有阅读教程,所以你应该在做任何其他事情之前马上去做。
  • 我想要所有学校的列表
  • 那么你为什么使用 DetailView 而不是 ListView?

标签: python django


【解决方案1】:

详细视图用于获取特定对象的详细信息。为此,您必须在 url 中传递 pk。

urlpatterns = [
path('<int:pk>/', SchoolDetailView.as_view(), name='school-detail'),

]

如果要显示对象列表,请使用 ListView

【讨论】:

  • 你能告诉我如何在url中传递pk吗,谢谢
  • 你也必须在你的模板 url 中传递这个 pk
  • 谢谢我现在明白了
猜你喜欢
  • 1970-01-01
  • 2021-01-25
  • 1970-01-01
  • 2014-06-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多