Я пытаюсь создать клон Instagram.
Нажатие кнопки «Далее» вызывает ajax.
В моем представлении по умолчанию определение сохраняет «следует» и возвращает объект ответа, данные которого имеют значение true / false.значения того, следил ли пользователь ранее.
сообщение об ошибке
‘django.urls.exceptions.NoReverseMatch: Reverse for 'profile'
with arguments '('',)' not found. 2 pattern(s) tried’
views.py
class ProfileListView(mixins.UpdateModelMixin, generics.GenericAPIView):
"""User post list"""
renderer_classes = [TemplateHTMLRenderer]
template_name = 'insta/profile_list.html'
serializer_class = InstaSerializer
permission_classes = [permissions.AllowAny]
def get(self, request, *args, **kwargs):
target = kwargs.get('username')
try:
target_user = USER.objects.get(username=target)
response = Insta.objects.filter(owner__username=target)
return Response({'posts': response, 'target_user': target_user})
except USER.DoesNotExist:
return HttpResponseRedirect(reverse('insta:dashboard'), status=HTTP_404_NOT_FOUND)
def post(self, request, *args, **kwargs):
followed_user = get_object_or_404(USER, username=kwargs.get('username'))
if request.user.is_authenticated:
follower_user = request.user
if followed_user == follower_user:
raise PermissionError('Unable to follow yourself')
else:
if follower_user in followed_user.followers.all():
followed_user.followers.remove(follower_user)
return Response({
'follow_exist': False
})
else:
follower_user.follows.add(followed_user)
return Response({
'follow_exist': True
})
else:
return redirect('insta/login')
urls.py
path('<username>/', insta_profile, name='profile'),
ajax
$.ajax({
type: 'POST',
url: '{% url 'insta:profile' username=target_user.username %}',
data: {'csrfmiddlewaretoken': '{{ csrf_token }}'},
success: function (response) {
if (response.follow_exist) {
$this.attr('class', 'btn btn-outline-secondary');
$this.text('cancel follow')
} else {
$this.attr('class', 'btn btn-primary');
$this.text('follow')
}
},
error: function (response) {
console.log(JSON.stringify(response))
}
});
Не могли бы вы сказать мне, почему это происходит?
Заранее спасибо.