如何在Django中重定向到显式命名的URL?

3

我正在尝试根据views.py中的变量重定向到特定页面:

redirect(f'feed/user/{first_user}')

但是这样做会将我重定向到以下网址:

feed/search/feed/user/first_user

相反,我想重定向到URL。
feed/user/first_user

我知道 feed/search/ 部分是因为我的 urls.py 中的 search url 调用了应该进行重定向的函数,但我希望保持这种方式,只更改重定向。

URLS.PY:

urlpatterns = [
    path('', login_required(PostListView.as_view()), name='feed-home'),
    path('user/<str:username>/', login_required(UserPostListView.as_view()), name='user-feed'),
    path('post/<int:pk>/', login_required(views.post_detail), name='post-detail'),
    path('comment_delete/', login_required(views.comment_delete), name='comment-delete'),
    path('post/new/', login_required(PostCreateView.as_view()), name='post-create'),
    path('post/<int:pk>/update', login_required(PostUpdateView.as_view()), name='post-update'),
    path('post/<int:pk>/delete', login_required(PostDeleteView.as_view()), name='post-delete'),
    path('about/', views.about, name='feed-about'),
    path('like/', login_required(views.post_like), name="post-likes"),
    path('comment_create/', login_required(views.comment_create), name="comment-create"),
    path('search/', login_required(views.user_search), name="user-search"),
]

你能使用 reverse 来生成URL吗?你能分享一下定义了你要重定向到的路径的 urls.py 文件吗? - Iain Shelvington
@KuldeepSinghSidhu 这给了我一个EOL语法错误^^,是的,我分享了urls.py。 - 0xDr0id
我觉得可能有一个语法错误:试试这个 (f'feed/user/{first_user.split("/")[-1]}') - Kuldeep Singh Sidhu
3个回答

3
您可以将视图名称和参数传递给 redirect。看起来您想要使用 user-feed 视图?
redirect('user-feed', username=first_user)

0

是的,它起作用了!谢谢你。我已经添加了以下内容:return redirect(reverse('user-feed', kwargs={'username' : first_user})) - 0xDr0id

0
你可以使用以下代码进行重定向。
return redirect('/accounts/twitter')

'/accounts/twitter' 是您想要移动到的 URL。我们在 urls.py 文件中创建了这些 URL。

您还可以使用以下代码跳转到特定网站。

def my_view(request):
    ...
    return redirect('https://example.com/')

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接