【发布时间】:2019-09-28 23:10:59
【问题描述】:
我正在尝试创建一个博客,并希望文章按类别划分。 Django 版本:2.1,Python:3.7
我不明白如何更改 urlpatterns 中的路径以显示类别名称,而不是 <int:pk>。在哪里可以查看 Django 代码示例?
我试图做 path('category.title') 但它不起作用。
这是我的models.py:
from django.db import models
from django.conf import settings
from django.urls import reverse
class Category(models.Model):
title = models.CharField(max_length=50)
image = models.ImageField(upload_to='', blank=True)
def __str__(self):
return self.title
class Article(models.Model):
title = models.CharField(max_length=255)
body = models.TextField()
date = models.DateTimeField(auto_now_add=True)
author = models.ForeignKey(
settings.AUTH_USER_MODEL,
on_delete=models.CASCADE
)
image = models.ImageField(upload_to='', blank=True)
cat = models.ForeignKey(
Category, on_delete=models.CASCADE, null=True,
)
def __str__(self):
return self.title
def get_absolute_url(self):
return reverse('article_detail', args=[str(self.id)])
class Comment(models.Model):
article = models.ForeignKey(Article, on_delete=models.CASCADE, related_name='comments')
comment = models.CharField(max_length=100)
author = models.ForeignKey(
settings.AUTH_USER_MODEL,
on_delete=models.CASCADE,
)
def __str__(self):
return self.comment
def get_absolute_url(self):
return reverse('article_list')
这是 urls.py:
from django.urls import path
from . import views
from .models import Category
urlpatterns = [
path('', views.ArticleViewList.as_view(), name='article_list'),
path('<int:pk>/edit/', views.ArticleUpdateView.as_view(), name='article_edit'),
path('<int:pk>/delete/', views.ArticleDeleteView.as_view(), name='article_delete'),
path('<int:pk>', views.ArticleDetailView.as_view(), name='article_detail'),
path('new/', views.ArticleCreateView.as_view(), name='article_new'),
]
这是返回文章列表的基于类的视图:
class ArticleViewList(LoginRequiredMixin, ListView):
model = models.Article
template_name = 'article_list.html'
login_url = 'login'
1)我希望在地址栏中显示类别的标题 2)我想知道使用基于类的视图是一个好的决定 3)我想知道如何在模板循环中显示特定类别的文章
【问题讨论】:
标签: python django django-models django-templates django-views