Django url профиля через slug выдаёт ошибку

Хочу сделать возможность кастомного url у профилей пользователя. Вот мой код

views.py

from django.shortcuts import render, redirect
from django.contrib import messages
from django.contrib.auth.decorators import login_required

from .forms import UpdateUserForm, UpdateProfileForm


@login_required
def profile(request, slug):
    if request.method == 'POST':
        user_form = UpdateUserForm(request.POST, instance=request.user)
        profile_form = UpdateProfileForm(request.POST, request.FILES, instance=request.user.profile)

        if user_form.is_valid() and profile_form.is_valid():
            user_form.save()
            profile_form.save()
            messages.success(request, 'Your profile is updated successfully')
            return redirect(to='profiles:users-profile') 
    else:
        user_form = UpdateUserForm(instance=request.user)
        profile_form = UpdateProfileForm(instance=request.user.profile)

    return render(request, 'profiles/profile.html', {'user_form': user_form, 'profile_form': profile_form, 'slug': slug})


from django.urls import reverse_lazy
from django.contrib.auth.views import PasswordChangeView
from django.contrib.messages.views import SuccessMessageMixin


class ChangePasswordView(SuccessMessageMixin, PasswordChangeView):
    template_name = 'users/change_password.html'
    success_message = "Successfully Changed Your Password"
    success_url = reverse_lazy('users-home')

forms.py

from django import forms

from django.contrib.auth.models import User
from .models import Profile


class UpdateUserForm(forms.ModelForm):
    username = forms.CharField(max_length=100, required=True, widget=forms.TextInput(attrs={'class': ''})) # form-control
    email = forms.EmailField(required=True, widget=forms.TextInput(attrs={'class': ''})) # form-control
    slug = forms.SlugField(max_length=100, required=True, widget=forms.TextInput(attrs={'class': ''}))

    class Meta:
        model = User
        fields = ['username', 'email', 'slug']


class UpdateProfileForm(forms.ModelForm):
    avatar = forms.ImageField(widget=forms.FileInput(attrs={'class': 'input-file', 'id': 'file'})) # form-control-file
    bio = forms.CharField(widget=forms.Textarea(attrs={'class': 'textarea_bio', 'rows': 5})) # form-control

    class Meta:
        model = Profile
        fields = ['avatar', 'bio']

models.py

from django.db import models
from django.contrib.auth.models import User
from PIL import Image

# Extending User Model Using a One-To-One Link
class Profile(models.Model):
    user = models.OneToOneField(User, on_delete=models.CASCADE)

    avatar = models.ImageField(default='profile_images/default.jpg', upload_to='profile_images')
    bio = models.TextField()

    slug = models.SlugField(default = 'id', max_length=250)

    def __str__(self):
        return self.user.username

    def save(self, *args, **kwargs):
        super().save()

        img = Image.open(self.avatar.path)

        if img.height > 200 or img.width > 200:  #100
            new_img = (200, 200)  #100
            img.thumbnail(new_img)
            img.save(self.avatar.path)

urls.py

from django.urls import path
from . import views

app_name = 'profiles'

urlpatterns=[
#    path('', views.profile, name='users-profile'),
    path('<slug:slug>/', views.profile, name='users-profile'),
]

Во views.py строка return redirect(to='profiles:users-profile') в таком виде работала, но из-за добавления slug перестала, я попытался изменить на return redirect(to='profiles:' slug), но это выдаёт ошибку:

NoReverseMatch at /profiles/id/

Reverse for 'users-profile' with no arguments not found. 1 pattern(s) tried: ['profiles/(?P<slug>[-a-zA-Z0-9_]+)/\\Z']

Как это исправить ?

Вернуться на верх