【问题标题】:Django redirect() doesn't redirect but rather refreshes the same pageDjango redirect() 不会重定向而是刷新同一页面
【发布时间】:2022-01-14 09:07:01
【问题描述】:

view.py

@login_required(login_url='index', redirect_field_name=None)
def new_character(request):
    if request.method == 'POST':
      character_form = CharacterForm(request.POST)
      if character_form.is_valid():
        new_character = character_form.save(commit=False)
        new_character.creator = request.user
        new_character.save()
        # If new_character has a primary key (pk) then it
        # means it was saved to the database.
        if new_character.pk:
          # TODO: For some reason this doesn't work.
          redirect('list_characters')
    else:
      character_form = CharacterForm()
    return render(request, 'characters/new-character.html', {'character_form': character_form})

urls.py

from django.urls import path

from . import views

urlpatterns = [
    path('', views.list_characters, name='list_characters'),
    path('new/', views.new_character, name='new_character'),
]

我检查并new_character.pk 被强制为True。但是,不会发生重定向,而是简单地刷新同一页面。

【问题讨论】:

  • 我相信你必须在嵌套的 if 语句中返回 redirect('list_characters')。

标签: python django redirect


【解决方案1】:

这里的问题是你没有返回redirect,这导致return render(request, 'characters/new-character.html'...被命中,从:

redirect('list_characters')

收件人:

return redirect('list_characters')

应该解决问题

【讨论】:

  • 我在这个上浪费了一个多小时......天哪,编程可能令人沮丧!感谢 CJ4 和 @since9teen94 帮助我。
猜你喜欢
  • 2012-07-07
  • 2023-03-11
  • 2015-03-11
  • 1970-01-01
  • 1970-01-01
  • 2021-05-03
  • 1970-01-01
  • 1970-01-01
  • 2013-12-27
相关资源
最近更新 更多