1 回答
TA贡献1829条经验 获得超9个赞
您可以添加一个额外的参数:
urlpatterns = [
path('post/<str:author>/<int:pk>/', PostDetailView.as_view(), name='post-detail'),
]
在视图中,您可以对作者进行过滤,如果作者的用户名不正确,则不会显示任何内容:
class PostDetailView(DetailView):
model = Post
def get_queryset(self, *args, **kwargs):
return super().get_queryset(*args, **kwargs).filter(
author__username=self.kwargs['author']
)
我们可以使用[Django-doc] 方法Post
生成一个对象的 URL ,其中包含作者的用户名:.get_absolute_url()
from django.urls import reverse
class Post(models.Model):
author = models.ForeignKey(User, on_delete=models.CASCADE)
title = models.CharField(max_length=100, blank="true")
content = models.CharField(max_length=400)
def get_absolute_url(self):
return reverse('post-detail', kwargs={'id': self.pk, 'author': self.author.username})
注意:通常使用
settings.AUTH_USER_MODEL
[Django-doc]来引用用户模型比直接使用User
模型 [Django-doc]更好。
添加回答
举报