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]更好。
添加回答
舉報