quote_from_bytes () ожидаемых байтов при перенаправлении обратно на ту же страницу - PullRequest
0 голосов
/ 07 февраля 2020

Получение этой странной ошибки при попытке перенаправить обратно на ту же страницу. Само представление меняет временную шкалу на другую по щелчку кнопки, это прекрасно работает для одной страницы, так как я могу перенаправить на эту страницу. Но был введен запрос, чтобы к нему можно было получить доступ и с другой страницы, поэтому я хотел, чтобы он просто перенаправил обратно на ту же страницу, но теперь я получаю эту ошибку и не могу найти что-либо об этом в Google. Вот два URL-адреса, на которые это следует перенаправить в зависимости от страницы:

https://127.0.0.1/si/home/      <-- This is a listview
https://127.0.0.1/si/<slug>/history/  <-- This is the detailview

В операторе печати возвращается «request.path_info»:

/si/<slug>/staff-trials/

Какой URL-адрес зрения, так что не уверен, что имею это право вообще. Вот мое мнение:

class StaffTrialView(RedirectView):
    def get_redirect_url(self, *args, **kwargs);
        slug = self.kwargs.get("slug")
        obj = get_object_or_404(Project, slug=slug)
        if obj.staff_trials:
            if obj.timeline_switch is False:                
                obj.timeline_switch = True
            else:
                obj.timeline_switch = False
        obj.save()
        print(self.request.path_info)    
        return HttpResponseRedirect(self.request.path_info)

Я также пытался вернуться так:

return redirect(self.request.get_full_path())

, но получаю ту же ошибку. Вот трассировка стека:

Environment:


Request Method: GET
Request URL: http://127.0.0.1:8000/si/working-out-how-to-do-the-check-marks/staff-trials/

Django Version: 2.2.5
Python Version: 3.7.5
Installed Applications:
['django.contrib.admin',
 'django.contrib.auth',
 'django.contrib.contenttypes',
 'django.contrib.messages',
 'django.contrib.sessions',
 'django.contrib.staticfiles',
 'django_filters',
 'microblog.apps.MicroblogConfig',
 'project_portal.apps.ProjectPortalConfig',
 'url_tree.apps.UrlTreeConfig']
Installed Middleware:
['django.middleware.security.SecurityMiddleware',
 'django.contrib.sessions.middleware.SessionMiddleware',
 'django.middleware.common.CommonMiddleware',
 'django.middleware.csrf.CsrfViewMiddleware',
 'django.contrib.auth.middleware.AuthenticationMiddleware',
 'django.contrib.messages.middleware.MessageMiddleware',
 'django.middleware.clickjacking.XFrameOptionsMiddleware']



Traceback:

File "/Users/rki23/opt/anaconda3/envs/django_env/lib/python3.7/site-packages/django/core/handlers/exception.py" in inner
  34.             response = get_response(request)

File "/Users/rki23/opt/anaconda3/envs/django_env/lib/python3.7/site-packages/django/core/handlers/base.py" in _get_response
  115.                 response = self.process_exception_by_middleware(e, request)

File "/Users/rki23/opt/anaconda3/envs/django_env/lib/python3.7/site-packages/django/core/handlers/base.py" in _get_response
  113.                 response = wrapped_callback(request, *callback_args, **callback_kwargs)

File "/Users/rki23/opt/anaconda3/envs/django_env/lib/python3.7/site-packages/django/views/generic/base.py" in view
  71.             return self.dispatch(request, *args, **kwargs)

File "/Users/rki23/opt/anaconda3/envs/django_env/lib/python3.7/site-packages/django/views/generic/base.py" in dispatch
  97.         return handler(request, *args, **kwargs)

File "/Users/rki23/opt/anaconda3/envs/django_env/lib/python3.7/site-packages/django/views/generic/base.py" in get
  193.                 return HttpResponseRedirect(url)

File "/Users/rki23/opt/anaconda3/envs/django_env/lib/python3.7/site-packages/django/http/response.py" in __init__
  456.         self['Location'] = iri_to_uri(redirect_to)

File "/Users/rki23/opt/anaconda3/envs/django_env/lib/python3.7/site-packages/django/utils/encoding.py" in iri_to_uri
  148.     return quote(iri, safe="/#%[]=:;$&()+,!?*@'~")

File "/Users/rki23/opt/anaconda3/envs/django_env/lib/python3.7/urllib/parse.py" in quote
  834.     return quote_from_bytes(string, safe)

File "/Users/rki23/opt/anaconda3/envs/django_env/lib/python3.7/urllib/parse.py" in quote_from_bytes
  859.         raise TypeError("quote_from_bytes() expected bytes")

Exception Type: TypeError at /si/working-out-how-to-do-the-check-marks/staff-trials/
Exception Value: quote_from_bytes() expected bytes
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...