Python 如何在url django中添加用户名

Python 如何在url django中添加用户名,python,django,Python,Django,Django新手,这是一个简单的博客帖子应用程序。如何在url中包含帖子作者的姓名 urlpatterns = [ path('post/<int:pk>/', PostDetailView.as_view(), name='post-detail'), ] views.py class PostDetailView(DetailView): model = Post 您可以添加一个额外的参数: urlpatterns = [ pat

Django新手,这是一个简单的博客帖子应用程序。如何在url中包含帖子作者的姓名

 urlpatterns = [
        path('post/<int:pk>/', PostDetailView.as_view(), name='post-detail'),
    ]
views.py

class PostDetailView(DetailView):

    model = Post 

您可以添加一个额外的参数:

urlpatterns = [
    path('post/<str:author>/<int:pk>/', PostDetailView.as_view(), name='post-detail'),
]

注意:通常最好使用来引用用户模型,而不是直接使用。有关更多信息,请参见


这对你有帮助吗?你好,谢谢你的回复。我得到了这个错误“使用参数(1,)”来反转“post detail”找不到。尝试了1个模式:[“post\\/(?P[^/]+)\\/(?P[0-9]+)\\\/$”]。@sokoine:您可能有一个
{%url'post detail'post.id%}/code>,但是它需要作者的用户名,所以:
{%url'post detail'author=post.author.username pk=post.id%}/code>。
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']
        )
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})