亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

如何在 url django 中添加用戶名

如何在 url django 中添加用戶名

慕桂英3389331 2023-07-18 10:10:47
這是 Django 新手,這是一個簡單的博客文章應用程序。如何在 url 中包含帖子作者的姓名? urlpatterns = [        path('post/<int:pk>/', PostDetailView.as_view(), name='post-detail'),    ]后模型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)views.pyclass PostDetailView(DetailView):    model = Post 
查看完整描述

1 回答

?
PIPIONE

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]更好。

查看完整回答
反對 回復 2023-07-18
  • 1 回答
  • 0 關注
  • 145 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號