【问题标题】:AttributeError: 'tuple' object has no attribute 'get' with redirect(reverse) in djangoAttributeError:'tuple'对象在django中没有带有redirect(reverse)的属性'get'
【发布时间】:2020-01-30 01:33:34
【问题描述】:

我的 django 应用有一个表单视图,用于提交创建新帖子的信息,之后它应该重定向到感谢页面。

def submit(request, slug):
    account = get_object_or_404(Account, slug=slug)
    if request.method == "POST":
       # process the data and post form as JSON 
       ret = create_or_edit_post(request, account, post=None, duplicate=False)
       if isinstance(ret, HttpResponseRedirect):
          post = account.posts.latest('id')
          # handle post info and post creation

          return redirect(reverse('post-submit-ty', kwargs={'slug': account.slug}))
       return ret

    context = { "account": account }

    return render(request, 'submit.html', context)

因为 redirect(reverse(...)) 返回一个元组,所以抛出:

AttributeError: 'tuple' object has no attribute 'get'
  File "django/core/handlers/base.py", line 131, in get_response
    response = middleware_method(request, response)
  File "newrelic/hooks/framework_django.py", line 325, in wrapper
    return wrapped(*args, **kwargs)
  File "django/middleware/clickjacking.py", line 32, in process_response
    if response.get('X-Frame-Options') is not None:

因为我需要传递 slug kwarg(作为元组)并重定向到感谢页面,但它正在寻找 http 响应,有没有办法使用 redirect(reverse)HttpResponseRedirect(reverse) 来处理这个问题?谢谢

【问题讨论】:

    标签: python django django-views django-urls


    【解决方案1】:

    实际上,您可以通过参数传递视图名称,redirect 将在内部执行 reverse

    试试这个,redirect('post-submit-ty',slug=account.slug)

    Django Shourtcuts redirect

    【讨论】:

      猜你喜欢
      • 2020-11-07
      • 1970-01-01
      • 1970-01-01
      • 2020-04-21
      • 2019-05-23
      • 2015-06-22
      • 1970-01-01
      • 1970-01-01
      • 2021-03-18
      相关资源
      最近更新 更多