Django中的DetailView,关键字'slug'
Posted
技术标签:
【中文标题】Django中的DetailView,关键字\'slug\'【英文标题】: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)
我做错了什么?
【问题讨论】:
【参考方案1】:首先,不要将您的 slug 称为“NewSlug”,大写而全是小写的“newslug”,甚至更好的“new_slug”,名称本身也应该更具描述性。
最后你需要告诉你的视图使用哪个字段,你可以用下面的属性来定义它:
slug_field = "NewSlug"
注意:类的属性不能是驼峰式,而是蛇式
【讨论】:
以上是关于Django中的DetailView,关键字'slug'的主要内容,如果未能解决你的问题,请参考以下文章
Django - DetailView 中的 DateTimeField
将 Pk 或 Slug 传递给 Django 中的通用 DetailView?