Получение этой странной ошибки при попытке перенаправить обратно на ту же страницу. Само представление меняет временную шкалу на другую по щелчку кнопки, это прекрасно работает для одной страницы, так как я могу перенаправить на эту страницу. Но был введен запрос, чтобы к нему можно было получить доступ и с другой страницы, поэтому я хотел, чтобы он просто перенаправил обратно на ту же страницу, но теперь я получаю эту ошибку и не могу найти что-либо об этом в 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