AttributeError: у объекта 'tuple' нет атрибута 'get' в views.py - PullRequest
0 голосов
/ 24 декабря 2018

Я хочу создать регистрационную форму, но я получаю ошибку атрибута при запуске приложения

from django.shortcuts import render
from basic_app.forms import UserForm,UserProfileInfoForm


def index(request):
    return render(request,'basic_app/index.html')
def register(request):
    registered=False
    if request.method=="POST":
        user_form=UserForm(data=request.POST)
        profile_form=UserProfileInfoForm(data=request.POST)

        if user_form.is_valid() and profile_from.is_valid():
            user=user_form.save()
            user.setpassword(user.password)
            user.save()

            profile=profile_form.save(commit=False)
            profile.user=user

            if 'profile_pic' in request.FILES:
                profile.profile_pic=request.FILES['profile_pic']
            profile.save()

            registered=True

        else:
        print(user_form.errors,profile_form.errors)
    else:
        user_form=UserForm()
        profile_form=UserProfileInfoForm()
    return(request,'basic_app/registration.html',

          {'user_form':user_form,
            'profile_form':profile_form,
            'registered':registered})

output

Внутренняя ошибка сервера: / basic_app / register / Traceback (самый последний вызовпоследнее): файл "C: \ Users \ Shoaib Khan \ AppData \ Local \ conda \ conda \ envs \ myenv \ lib \ site-packages \ django \ core \ handlers \ exception.py", строка 34, во внутреннем ответе = get_response(запрос) Файл "C: \ Users \ Shoaib Khan \ AppData \ Local \ conda \ conda \ envs \ myenv \ lib \ site-packages \ django \ utils \ deprecation.py", строка 93, в вызов response = self.process_response (запрос, ответ) Файл "C: \ Users \ Shoaib Khan \ AppData \ Local \ conda \ conda \ envs \ myenv \ lib \ site-packages \ django \ middleware \ clickjacking.py", строка 26, в process_response

if response.get('X-Frame-Options') is not None:

AttributeError: у объекта 'tuple' нет атрибута 'get' [24 / Dec / 2018 15:34:51] "GET / basic_app / register / HTTP / 1.1" 500 61448

Ответы [ 2 ]

0 голосов
/ 24 декабря 2018

Это из-за этой строки:

return(request,'basic_app/registration.html',

      {'user_form':user_form,
        'profile_form':profile_form,
        'registered':registered})

Вы действительно создали здесь кортеж.Обратите внимание на круглые скобки вокруг трех вещей, которые вы возвращаете?

Вот как вы визуализируете шаблон в django:

from django.shortcuts import render

render(request, 'polls/index.html', context)

Так что в вашем случае это будет работать:

render(request,'basic_app/registration.html', {
                                         'user_form':user_form,
                                         'profile_form':profile_form,
                                         'registered':registered
                                      })

Для получения дополнительной информации о render ознакомьтесь с документами

0 голосов
/ 24 декабря 2018

Измените

return(request,'basic_app/registration.html',

          {'user_form':user_form,
            'profile_form':profile_form,
            'registered':registered})

на

return render(request,'basic_app/registration.html',

          {'user_form':user_form,
            'profile_form':profile_form,
            'registered':registered})
...