AttributeError at /zaloguj/ 'ShopUser' object has no attribute 'get'

0
def login_user(request, page=0):
    page = 'login'
    if request.method == 'POST':
        password = request.POST.get('password', '')
        email = request.POST.get('email', '')
        try:
            user = ShopUser.objects.get(email=email)
        except ObjectDoesNotExist:
            messages.warning(request, 'Podano zły login lub złe hasło.')
            return HttpResponseRedirect('/zaloguj/')
        else:
            if user.check_password(password):
                return user
            else:
                messages.warning(request, 'Podano zły login lub złe hasło.')
                return HttpResponseRedirect('/zaloguj/')

    # View code here...
    t = loader.get_template('ext/koszyk-checkout.html')
    c = locals()

    return HttpResponse(t.render(c, request))

Orientuje sie ktos dlaczego zwraca mi taki error jak w tytule po wykonaniu tego widoku??? dostaje error ze obiekt nie posiada get... pierwszy raz cos takiego widze

0

A masz jakąś linie gdIe ten problem?

0

Siódma, sądząc po komunikacie o błędzie: user = ShopUser.objects.get(email=email)

0

Po prostu w, ShopUser.objects nie ma metody get, sprawdź dokumentacje, albo kod, jak dostać, co tam chcesz.

1

Jeśli ShopUser to jest Model Django to objects.get jest w 100% poprawne.

1

Wrzuć pełny stack trace, bo możliwe że błąd leci gdzie indziej?
ShopUser na pewno jest Modelem Django? Możesz pokazać jego kod? nie nadpisałeś objects?

1

Nie zrobiłeś gdzieś literówki ShopUser.get() zamiast ShopUser.objects.get()?

0

nie zrobiłem. Cały czas mam ten blad...

szok napisał(a):

Wrzuć pełny stack trace, bo możliwe że błąd leci gdzie indziej?
ShopUser na pewno jest Modelem Django? Możesz pokazać jego kod? nie nadpisałeś objects?

Tak, ale teraz zrobiłem get na zwyklym modelu user w django i dalej mam ten sam blad.

Nawet jak robie user = User.objects.filter(email=email).first() to i tak mi zwraca ten sam blad

0

Ten sam czyli AttributeError at /zaloguj/ 'ShopUser' object has no attribute 'get'? To błąd masz w innym miejscu. Daj pełnego call stacka

0

AttributeError at /zaloguj/

'User' object has no attribute 'get'

Request Method: 	POST
Request URL: 	http://localhost:9010/zaloguj/
Django Version: 	4.1.4
Exception Type: 	AttributeError
Exception Value: 	

'User' object has no attribute 'get'

Exception Location: 	/home/hubert/monkey-shop.pl/venv/lib/python3.10/site-packages/django/middleware/clickjacking.py, line 27, in process_response
Raised during: 	apps.monkeyShop.views.login_user
Python Executable: 	/home/hubert/monkey-shop.pl/venv/bin/python3
Python Version: 	3.10.12
Python Path: 	

['/home/hubert/monkey-shop.pl',
 '/usr/lib/python310.zip',
 '/usr/lib/python3.10',
 '/usr/lib/python3.10/lib-dynload',
 '/home/hubert/monkey-shop.pl/venv/lib/python3.10/site-packages']

Server time: 	Fri, 10 Nov 2023 13:24:17 +0100
Traceback Switch to copy-and-paste view

    /home/hubert/monkey-shop.pl/venv/lib/python3.10/site-packages/django/core/handlers/exception.py, line 55, in inner

                        response = get_response(request)

         …
    Local vars
    /home/hubert/monkey-shop.pl/venv/lib/python3.10/site-packages/django/utils/deprecation.py, line 138, in __call__

                    response = self.process_response(request, response)

         …
    Local vars
    /home/hubert/monkey-shop.pl/venv/lib/python3.10/site-packages/django/middleware/clickjacking.py, line 27, in process_response

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

         …
    Local vars

Request information
USER

AnonymousUser
GET

No GET data
POST
Variable 	Value
csrfmiddlewaretoken 	

'oWvG3IOgFGaLlZu7L6fn5FVBtYRQawVggNaCyNB1igL7xoP5YzJAxIu47TdqAcXF'

email 	

'[email protected]'

password 	

'start1234'

FILES

No FILES data
COOKIES
Variable 	Value
csrftoken 	

'21P6FfXVNKLwmzv8nDEnCdJDO5wKAQcz'

markowi-cart 	

'0'


AttributeError at /zaloguj/

'User' object has no attribute 'get'

Request Method: 	POST
Request URL: 	http://localhost:9010/zaloguj/
Django Version: 	4.1.4
Exception Type: 	AttributeError
Exception Value: 	

'User' object has no attribute 'get'

Exception Location: 	/home/hubert/monkey-shop.pl/venv/lib/python3.10/site-packages/django/middleware/clickjacking.py, line 27, in process_response
Raised during: 	apps.monkeyShop.views.login_user
Python Executable: 	/home/hubert/monkey-shop.pl/venv/bin/python3
Python Version: 	3.10.12
Python Path: 	

['/home/hubert/monkey-shop.pl',
 '/usr/lib/python310.zip',
 '/usr/lib/python3.10',
 '/usr/lib/python3.10/lib-dynload',
 '/home/hubert/monkey-shop.pl/venv/lib/python3.10/site-packages']

Server time: 	Fri, 10 Nov 2023 13:24:17 +0100
Traceback Switch to copy-and-paste view

    /home/hubert/monkey-shop.pl/venv/lib/python3.10/site-packages/django/core/handlers/exception.py, line 55, in inner

                        response = get_response(request)

         …
    Local vars
    /home/hubert/monkey-shop.pl/venv/lib/python3.10/site-packages/django/utils/deprecation.py, line 138, in __call__

                    response = self.process_response(request, response)

         …
    Local vars
    /home/hubert/monkey-shop.pl/venv/lib/python3.10/site-packages/django/middleware/clickjacking.py, line 27, in process_response

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

         …
    Local vars

Request information
USER

AnonymousUser
GET

No GET data
POST
Variable 	Value
csrfmiddlewaretoken 	

'oWvG3IOgFGaLlZu7L6fn5FVBtYRQawVggNaCyNB1igL7xoP5YzJAxIu47TdqAcXF'

email 	

'[email protected]'

password 	

'start1234'

FILES

No FILES data
COOKIES
Variable 	Value
csrftoken 	

'21P6FfXVNKLwmzv8nDEnCdJDO5wKAQcz'

markowi-cart 	

'0'

Nic wiecej mi nie pokazuje.... tylko tyle. Nie kopiowalem wszystkiego

0

mój widok wygląda teraz tak:

def login_user(request, page=0):
    page = 'login'
    if request.method == 'POST':
        password = request.POST.get('password', '')
        email = request.POST.get('email', '')
        try:
            user = User.objects.get(email=email)
            # cartAutho = CartAuthorized.objects.get(user=user)
        except ObjectDoesNotExist:
            messages.warning(request, 'Podano zły login lub złe hasło.')
            return HttpResponseRedirect('/zaloguj/')
        else:
            if user.check_password(password):
                return user
            else:
                messages.warning(request, 'Podano zły login lub złe hasło.')
                return HttpResponseRedirect('/zaloguj/')

    # View code here...
    t = loader.get_template('ext/koszyk-checkout.html')
    c = locals()

    return HttpResponse(t.render(c, request))
    ```
0

Możesz wkleić stacktrace który dostajesz w konsoli (pełny dla tego requesta), nie w errorze który zwraca Django?
Rozumiem że model User to jest django.contrib.auth.models.User tak?

0
szok napisał(a):

Możesz wkleić stacktrace który dostajesz w konsoli (pełny dla tego requesta), nie w errorze który zwraca Django?
Rozumiem że model User to jest django.contrib.auth.models.User tak?

tak, ten User...

System check identified no issues (0 silenced).
November 12, 2023 - 11:56:39
Django version 4.1.4, using settings 'settings'
Starting development server at http://localhost:9010/
Quit the server with CONTROL-C.
[12/Nov/2023 11:56:45] "GET / HTTP/1.1" 200 26557
[12/Nov/2023 11:56:45] "GET /static/css/style.css HTTP/1.1" 304 0
Not Found: /icon.png
[12/Nov/2023 11:56:47] "GET /koszyk/ HTTP/1.1" 200 18383
[12/Nov/2023 11:56:48] "GET /koszyk-podsumowanie/ HTTP/1.1" 200 16168
Internal Server Error: /zaloguj/
Traceback (most recent call last):
  File "/home/hubert/monkey-shop.pl/venv/lib/python3.10/site-packages/django/core/handlers/exception.py", line 55, in inner
    response = get_response(request)
  File "/home/hubert/monkey-shop.pl/venv/lib/python3.10/site-packages/django/utils/deprecation.py", line 138, in __call__
    response = self.process_response(request, response)
  File "/home/hubert/monkey-shop.pl/venv/lib/python3.10/site-packages/django/middleware/clickjacking.py", line 27, in process_response
    if response.get("X-Frame-Options") is not None:
AttributeError: 'User' object has no attribute 'get'
[12/Nov/2023 11:56:54] "POST /zaloguj/ HTTP/1.1" 500 64792

0

To jest cały stack?, dziwny bo nie pokazuje gdzie się faktycznie wywalił.
Zrobiłem test u siebie i mam caly stack, zobacz niżej, dokładnie mi pokazuje w którym miejscu poleciał wyjątek.

Traceback (most recent call last):
  File "/home/szok/projects/project/.env/lib/python3.8/site-packages/django/core/handlers/exception.py", line 41, in inner
    response = get_response(request)
  File "/home/szok/projects/project/.env/lib/python3.8/site-packages/django/core/handlers/base.py", line 187, in _get_response
    response = self.process_exception_by_middleware(e, request)
  File "/home/szok/projects/project/.env/lib/python3.8/site-packages/django/core/handlers/base.py", line 185, in _get_response
    response = wrapped_callback(request, *callback_args, **callback_kwargs)
  File "/home/szok/projects/project/.env/lib/python3.8/site-packages/django/views/generic/base.py", line 68, in view
    return self.dispatch(request, *args, **kwargs)
  File "/home/szok/projects/project/src/cos/core/views.py", line 65, in dispatch
    return super().dispatch(request, *args, **kwargs)
  File "/home/szok/projects/project/src/cos/utils/view_mixins.py", line 70, in dispatch
    return super().dispatch(request, *args, **kwargs)
  File "/home/szok/projects/project/.env/lib/python3.8/site-packages/django/views/generic/base.py", line 88, in dispatch
    return handler(request, *args, **kwargs)
  File "/home/szok/projects/project/.env/lib/python3.8/site-packages/django/views/generic/base.py", line 155, in get
    context = self.get_context_data(**kwargs)
  File "/home/szok/projects/project/src/cos/core/views.py", line 69, in get_context_data
    User.get(self.request)
AttributeError: type object 'User' has no attribute 'get'

Coś masz namieszane, pewnie w innym miejscu, bez całego kodu to wróżenie z fusów.

0
def login_user(request, page=0):
    page = 'login'
    if request.method == 'POST':
        password = request.POST.get('password', '')
        email = request.POST.get('email', '')
        try:
            user = User.objects.all()[0]
            # cartAutho = CartAuthorized.objects.get(user=user)
        except ObjectDoesNotExist:
            messages.warning(request, 'Podano zły login lub złe hasło.')
            return HttpResponseRedirect('/zaloguj/')
        else:
            if user.check_password(password):
                return user
            else:
                messages.warning(request, 'Podano zły login lub złe hasło.')
                return HttpResponseRedirect('/zaloguj/')

TO też mi zwraca 'User' object has no attribute 'get'

0

oho... mam. Patrzcie na to... to nie wywala błędu...

def login_user(request, page=0):
    page = 'login'
    if request.method == 'POST':
        password = request.POST.get('password', '')
        email = request.POST.get('email', '')
        try:
            user = User.objects.get(email=email)
            # user = User.objects.get(email=email)
            # cartAutho = CartAuthorized.objects.get(user=user)
        except ObjectDoesNotExist:
            messages.warning(request, 'Podano zły login lub złe hasło.')
            return HttpResponseRedirect('/zaloguj/')
        else:
            pass
            # if user.check_password(password):
            #     return user
            # else:
            #     messages.warning(request, 'Podano zły login lub złe hasło.')
            #     return HttpResponseRedirect('/zaloguj/')
            

czyli check_password() wywala ten blad

to tez wywala blad:

def login_user(request, page=0):
    page = 'login'
    if request.method == 'POST':
        password = request.POST.get('password', '')
        email = request.POST.get('email', '')
        try:
            user = User.objects.get(email=email)
            # user = User.objects.get(email=email)
            # cartAutho = CartAuthorized.objects.get(user=user)
        except ObjectDoesNotExist:
            messages.warning(request, 'Podano zły login lub złe hasło.')
            return HttpResponseRedirect('/zaloguj/')
        else:
            return user

czyli return user wywala blad

1

Pokaż cały kod, który to reprodukuje bo masz tu po prostu coś głębiej skopane bo to co podajesz wygląda ok

0

Pokaż modele, bo mam wrażenie, że jakieś dziwne dziedziczenie tam odchodzi i nie zwracasz poprawnego modelu.

0

Chcesz żeby Ci ludzie pomogli to wrzuć potrzebny kod, a nie zabawa w ciuciubabkę...

1
  except ObjectDoesNotExist:
            messages.warning(request, 'Podano zły login lub złe hasło.')
            return HttpResponseRedirect('/zaloguj/')
        else:
            if user.check_password(password):
                  return user  # <------- Dlaczego tu zwracasz usera? A w pozostałych przypadkach HttpResponseRedirect? 
            else:
                messages.warning(request, 'Podano zły login lub złe hasło.')
                return HttpResponseRedirect('/zaloguj/')

0

Już działa dobrze... zmieniłem kod na taki:


def login_user(request, page=0):
    page = 'login'
    if request.method == 'POST':
        password = request.POST.get('password', '')
        email = request.POST.get('email', '')
        try:
            user = authenticate(request, username=email, password=password)
            if user is not None:
                login(request, user)
            # user = User.objects.get(email=email)
            # cartAutho = CartAuthorized.objects.get(user=user)
        except ObjectDoesNotExist:
            messages.warning(request, 'Podany email nie istnieje w bazie danych.')
            return HttpResponseRedirect('/zaloguj/')
        else:
            if user:
                user = ShopUser.objects.get(email=email)
                messages.success(request, 'Zalogowano z powodzeniem.')
            else:
                messages.warning(request, 'Podano zły login lub złe hasło.')
                return HttpResponseRedirect('/zaloguj/')

    # View code here...
    t = loader.get_template('ext/koszyk-checkout.html')
    c = locals()

    return HttpResponse(t.render(c, request))

    ```
1

Moje zasadnicze pytanie, czemu sam implementujesz widok logowania, zamiast skorzystać z gotowego z Django?

from django.contrib.auth import views as auth_views

path("accounts/login/", auth_views.LoginView.as_view()),

w as_view() możesz np: dodać template_name='twoj_login_template.html'

0

A jakoś tak... nastepnym razem postaram sie zrobic tak jak Ty mowisz

1 użytkowników online, w tym zalogowanych: 0, gości: 1