#python #django #django-models #django-rest-framework #django-views
#python #django #django-модели #django-rest-framework #django-просмотры
Вопрос:
Ну, я пытаюсь добавить подобный переключатель или кнопку like в свой проект и получил эту ошибку. Как я могу исправить эту ошибку?
view.py
class PostLikeToggle(RedirectView):
def get_redirect_url(self, *args, **kwargs):
slug=self.kwargs.get('slug')
print(slug,'slug')
pk=self.kwargs.get('pk')
print(pk,'pk')
obj =get_object_or_404(Post,pk=pk,slug=slug)
print(obj,'post')
user=self.request.user
if user.is_authenticated:
if user in obj.likes.all():
obj.likes.remove(user)
else:
obj.likes.add(user)
return redirect(f'/posts/{pk}/{slug}')
трассировка:
Traceback (most recent call last):
File "C:UsersAHMEDanaconda3libsite-packagesdjangocorehandlersexception.py", line 34, in inner
response = get_response(request)
File "C:UsersAHMEDanaconda3libsite-packagesdjangocorehandlersbase.py", line 115, in _get_response
response = self.process_exception_by_middleware(e, request)
File "C:UsersAHMEDanaconda3libsite-packagesdjangocorehandlersbase.py", line 113, in _get_response
response = wrapped_callback(request, *callback_args, **callback_kwargs)
File "C:UsersAHMEDanaconda3libsite-packagesdjangoviewsgenericbase.py", line 71, in view
return self.dispatch(request, *args, **kwargs)
File "C:UsersAHMEDanaconda3libsite-packagesdjangoviewsgenericbase.py", line 97, in dispatch
return handler(request, *args, **kwargs)
File "C:UsersAHMEDanaconda3libsite-packagesdjangoviewsgenericbase.py", line 193, in get
return HttpResponseRedirect(url)
File "C:UsersAHMEDanaconda3libsite-packagesdjangohttpresponse.py", line 485, in __init__
self['Location'] = iri_to_uri(redirect_to)
File "C:UsersAHMEDanaconda3libsite-packagesdjangoutilsencoding.py", line 147, in iri_to_uri
return quote(iri, safe="/#%[]=:;$amp;() ,!?*@'~")
File "C:UsersAHMEDanaconda3liburllibparse.py", line 839, in quote
return quote_from_bytes(string, safe)
File "C:UsersAHMEDanaconda3liburllibparse.py", line 864, in quote_from_bytes
raise TypeError("quote_from_bytes() expected bytes")
Exception Type: TypeError at /posts/12/tesing/like/
Exception Value: quote_from_bytes() expected bytes
если потребуется больше деталей, чем скажите мне, я обновлю свой вопрос с этой информацией.
Ответ №1:
get_redirect_url
должна возвращать строку, а не HttpResponse
Измените его на:
return f'/posts/{pk}/{slug}'