AttributeError: у объекта 'tuple' нет атрибута 'get' с перенаправлением (reverse) в django - PullRequest
0 голосов
/ 30 января 2020

my 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)

с момента перенаправления (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)? спасибо

1 Ответ

0 голосов
/ 30 января 2020

На самом деле вы можете передать имя представления с аргументами, а redirect собирается сделать внутренне reverse.

Попробуйте это, redirect('post-submit-ty',slug=account.slug).

Django Shurtcuts перенаправить

...