[英]DetailView in Django, keyword 'slug'
我最近開始學習 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
視圖.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
網址.py
from django.urls import path
from .views import GetNews
urlpatterns = [
path('news/<str:NewsSlug>/', GetNews.as_view(), name='news'),
]
模型.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})
我究竟做錯了什么?
首先,不要將您的 slug 稱為大寫的“NewSlug”,而是全部小寫的“newslug”甚至更好的“new_slug”,名稱本身也應該更具描述性。
最后,您需要告訴您的視圖使用哪個字段,您可以使用以下屬性定義它:
slug_field = "NewSlug"
注意:class 的屬性不應該是駱駝殼,而是蛇殼
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.