簡體   English   中英

Django 中的 DetailView,關鍵字“slug”

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM