django.core.exceptions.ValidationError: [«_auth_user_id» значение должно быть целым числом. »] ошибка в Django - PullRequest
0 голосов
/ 10 октября 2019

что касается заголовка, у меня есть эта проблема с проверкой в ​​Django. Эта ошибка возникает при выходе из системы, похоже, что система ищет идентификатор пользователя, но, поскольку я очищаю сеанс с выходом из системы (в любом случае, не уверен, что это правильно, я использую django auth для системы входа / выхода из системы),он не может найти ни одного пользователя с таким же идентификатором в сеансе и выдает мне эту ошибку. Поэтому я попытался удалить все пользовательские вызовы, которые у меня есть в коде, но он все еще не работает.

Здесь, как следует полный журнал ошибок.

Internal Server Error: /
Traceback (most recent call last):
File "C:\Users\gello\AppData\Local\Programs\Python\Python37-32\lib\site-packages\django\db\models\fields\__init__.py", line 941, in to_python
 return int(value)
ValueError: invalid literal for int() with base 10: '_auth_user_id'

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
File "C:\Users\gello\AppData\Local\Programs\Python\Python37-32\lib\site-packages\django\core\handlers\exception.py", line 34, in inner       
 response = get_response(request)
File "C:\Users\gello\AppData\Local\Programs\Python\Python37-32\lib\site-packages\django\core\handlers\base.py", line 115, in _get_response   
 response = self.process_exception_by_middleware(e, request)
File "C:\Users\gello\AppData\Local\Programs\Python\Python37-32\lib\site-packages\django\core\handlers\base.py", line 113, in _get_response   
 response = wrapped_callback(request, *callback_args, **callback_kwargs)
File "C:\Users\gello\Desktop\Projects\buyit\home\views.py", line 12, in index
 return render(request, "index.html", {"products": products, "product_reviews": product_reviews})
File "C:\Users\gello\AppData\Local\Programs\Python\Python37-32\lib\site-packages\django\shortcuts.py", line 36, in render
 content = loader.render_to_string(template_name, context, request, using=using)
File "C:\Users\gello\AppData\Local\Programs\Python\Python37-32\lib\site-packages\django\template\loader.py", line 62, in render_to_string    
 return template.render(context, request)
File "C:\Users\gello\AppData\Local\Programs\Python\Python37-32\lib\site-packages\django\template\backends\django.py", line 61, in render     
 return self.template.render(context)
File "C:\Users\gello\AppData\Local\Programs\Python\Python37-32\lib\site-packages\django\template\base.py", line 171, in render
 return self._render(context)
File "C:\Users\gello\AppData\Local\Programs\Python\Python37-32\lib\site-packages\django\template\base.py", line 163, in _render
 return self.nodelist.render(context)
File "C:\Users\gello\AppData\Local\Programs\Python\Python37-32\lib\site-packages\django\template\base.py", line 937, in render
 bit = node.render_annotated(context)
File "C:\Users\gello\AppData\Local\Programs\Python\Python37-32\lib\site-packages\django\template\base.py", line 904, in render_annotated     
 return self.render(context)
File "C:\Users\gello\AppData\Local\Programs\Python\Python37-32\lib\site-packages\django\template\loader_tags.py", line 150, in render        
 return compiled_parent._render(context)
File "C:\Users\gello\AppData\Local\Programs\Python\Python37-32\lib\site-packages\django\template\base.py", line 163, in _render
 return self.nodelist.render(context)
File "C:\Users\gello\AppData\Local\Programs\Python\Python37-32\lib\site-packages\django\template\base.py", line 937, in render
 bit = node.render_annotated(context)
File "C:\Users\gello\AppData\Local\Programs\Python\Python37-32\lib\site-packages\django\template\base.py", line 904, in render_annotated     
 return self.render(context)
File "C:\Users\gello\AppData\Local\Programs\Python\Python37-32\lib\site-packages\django\template\defaulttags.py", line 302, in render        
 match = condition.eval(context)
File "C:\Users\gello\AppData\Local\Programs\Python\Python37-32\lib\site-packages\django\template\defaulttags.py", line 876, in eval
 return self.value.resolve(context, ignore_failures=True)
File "C:\Users\gello\AppData\Local\Programs\Python\Python37-32\lib\site-packages\django\template\base.py", line 671, in resolve
 obj = self.var.resolve(context)
File "C:\Users\gello\AppData\Local\Programs\Python\Python37-32\lib\site-packages\django\template\base.py", line 796, in resolve
 value = self._resolve_lookup(context)
File "C:\Users\gello\AppData\Local\Programs\Python\Python37-32\lib\site-packages\django\template\base.py", line 829, in _resolve_lookup      
 current = current[bit]
File "C:\Users\gello\AppData\Local\Programs\Python\Python37-32\lib\site-packages\django\utils\functional.py", line 256, in inner
 self._setup()
File "C:\Users\gello\AppData\Local\Programs\Python\Python37-32\lib\site-packages\django\utils\functional.py", line 392, in _setup
 self._wrapped = self._setupfunc()
File "C:\Users\gello\AppData\Local\Programs\Python\Python37-32\lib\site-packages\django\contrib\auth\middleware.py", line 24, in <lambda>    
 request.user = SimpleLazyObject(lambda: get_user(request))
File "C:\Users\gello\AppData\Local\Programs\Python\Python37-32\lib\site-packages\django\contrib\auth\middleware.py", line 12, in get_user    
 request._cached_user = auth.get_user(request)
File "C:\Users\gello\AppData\Local\Programs\Python\Python37-32\lib\site-packages\django\contrib\auth\__init__.py", line 182, in get_user     
 user_id = _get_user_session_key(request)
File "C:\Users\gello\AppData\Local\Programs\Python\Python37-32\lib\site-packages\django\contrib\auth\__init__.py", line 59, in _get_user_session_key
 return get_user_model()._meta.pk.to_python(request.session[SESSION_KEY])
File "C:\Users\gello\AppData\Local\Programs\Python\Python37-32\lib\site-packages\django\db\models\fields\__init__.py", line 946, in to_python
 params={'value': value},
django.core.exceptions.ValidationError: ["'_auth_user_id' value must be an integer."]
[10/Oct/2019 20:21:38] "GET / HTTP/1.1" 500 184085

Я могу войти, если яудалите "{% if request.user.is_authenticated%}" из моего шаблона. Затем мне нужно вставить его снова, чтобы показать меню для зарегистрированного пользователя, и все работает идеально, пока я не сделаю снова выход из системы, и он снова запустится с той же ошибкой.

Я попробовал несколько вещей, но все еще не могуразберитесь, что происходит и куда идти, чтобы найти, в чем проблема.

Я новичок в django и несколько дней пытаюсь решить эту проблему, если кто-нибудь может дать мне правильное направлениерешить эту проблему было бы очень полезно.

1 Ответ

0 голосов
/ 11 октября 2019

Я нашел решение!

Проблема заключалась в сохранении переменной сеанса и проверке ключа сеанса.

Если я не понял его неправильно Ключ сеанса "voucher_id" был сохраненв сеансе auth_user_id, и это вызывало проблему из-за сеанса, который искал user_id, где хранился ключ.

Я опубликую здесь изменения, которые я внес в мой код для решения этой проблемы, вмой ваучер context.py (где я проверяю, находится ли код ваучера в сеансе):

До:

if ['voucher_id'] not in request.session:
        voucher_id = request.session.get('voucher_id')
        try:
            code = Voucher.objects.get(id=voucher_id)
        except Voucher.DoesNotExist:
            code = None
    else:
        None

Фиксированный код:

if 'voucher_id':
        voucher_id = request.session.get('voucher_id')
        try:
            code = Voucher.objects.get(id=voucher_id)
        except Voucher.DoesNotExist:
            code = None
    else:
        None

ДляВыход из системы, который я использовал (что касается ответа ozgur, опубликованного здесь Ошибка времени выполнения при попытке выхода из системы django ):

from django.contrib.auth import logout as django_logout


@login_required
def logout(request):
    django_logout(request)
    return  HttpResponseRedirect(reverse('index'))

Надеюсь, что эта логика может быть полезна для кого-то еще, кто работает в этой проблемеУ меня было долгое и глубокое чтение документации django , чтобы разобраться в этом.

Спасибо, Ральф, за то, что потратили время, пытаясь выяснить, где могла быть проблема, и отправитья в гоПравильное направление поиска проблемы в сеансе.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...