为了账号安全,请及时绑定邮箱和手机立即绑定

如何在 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 关注
  • 118 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信