如何在 url django 中添加用户名

这是 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.py


class PostDetailView(DetailView):


    model = Post 


慕桂英3389331
浏览 120回答 1
1回答

PIPIONE

您可以添加一个额外的参数: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 reverseclass 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]更好。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python