AttributeError:'tuple'对象在Django中没有带有redirect(reverse)的属性'get'

问题描述 投票:0回答:1

我的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个回答
0
投票

实际上,您可以传递带有参数的视图名称,并且redirect将在内部执行reverse

尝试一下,redirect('post-submit-ty',slug=account.slug)

Django Shourtcuts redirect

© www.soinside.com 2019 - 2024. All rights reserved.