1 回答

TA貢獻(xiàn)1829條經(jīng)驗(yàn) 獲得超9個(gè)贊
您可以添加一個(gè)額外的參數(shù):
urlpatterns = [
? ? path('post/<str:author>/<int:pk>/', PostDetailView.as_view(), name='post-detail'),
]
在視圖中,您可以對(duì)作者進(jìn)行過(guò)濾,如果作者的用戶名不正確,則不會(huì)顯示任何內(nèi)容:
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
生成一個(gè)對(duì)象的 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]來(lái)引用用戶模型比直接使用User
模型 [Django-doc]更好。
添加回答
舉報(bào)