【问题标题】:DetailView in Django, keyword 'slug'Django中的DetailView,关键字'slug'
【发布时间】:2022-01-15 06:05:47
【问题描述】:

我最近开始学习 Django。我想显示一条新闻,但是当我打开链接时,我收到一条错误消息:

Cannot resolve keyword 'slug' into field. Choices are: NewsTitles, NewsContent, NewsSlug
Request Method: GET
Request URL:    http://127.0.0.1:8000/news/nam-gravida-purus-non/
Django Version: 4.0
Exception Type: FieldError

views.py

from django.views.generic import DetailView
from .models import News

class GetNews(DetailView):
    model = News
    slug_url_kwarg = 'NewsSlug'
    template_name = 'news/single_news.html'
    context_object_name = 'single_news'
    allow_empty = False

urls.py

from django.urls import path
from .views import GetNews

urlpatterns = [
    path('news/<str:NewsSlug>/', GetNews.as_view(), name='news'),
]

models.py

from django.db import models
from django.urls import reverse_lazy

class News(models.Model):
    NewsTitles = models.CharField(max_length=120)
    NewsContent = models.TextField(max_length=255)
    NewsSlug = models.SlugField(max_length=255)

    def __str__(self):
        return self.NewsTitles

    def get_absolute_url(self):
        return reverse_lazy('news', kwargs={'NewsSlug': self.NewsSlug})

我做错了什么?

【问题讨论】:

    标签: python django django-models django-views django-urls


    【解决方案1】:

    首先,不要将您的 slug 称为“NewSlug”,大写而全是小写的“newslug”,甚至更好的“new_slug”,名称本身也应该更具描述性。

    最后你需要告诉你的视图使用哪个字段,你可以用下面的属性来定义它:

    slug_field = "NewSlug"
    

    注意:类的属性不能是驼峰式,而是蛇式

    【讨论】:

      猜你喜欢
      • 2018-08-07
      • 2019-03-11
      • 1970-01-01
      • 2013-08-17
      • 2015-11-04
      • 2013-08-17
      • 2017-10-19
      • 2011-08-09
      • 2021-10-02
      相关资源
      最近更新 更多