Когда пользователь использует электронную почту в качестве имени пользователя, обратный просмотр не выполняется. Но когда я изменяю имя пользователя на имя пользователя без электронной почты, используя панель администратора, это прекрасно работает. Я много искал, но не смог найти подобную проблему.
Моя модель пользователя:
class CustomUser(AbstractUser):
date_joined = models.DateField(auto_now_add=True)
email = models.EmailField(unique=True)
def __str__(self):
return self.username
Отвечать:
class UserUpdateView(SuccessMessageMixin, LoginRequiredMixin, UpdateView):
template_name = "accounts/user_update.html"
form_class = UserChangingForm
model = CustomUser
slug_field = 'username'
slug_url_kwarg = 'username'
success_message = '%(username)s was updated successfully'
def get_success_url(self):
return reverse('accounts:user_update', kwargs={'username': self.object.username})
Urls.py:
from . import views
from django.contrib.auth import views as authViews
app_name = 'accounts'
urlpatterns = {
path('signup/', views.UserSignupView.as_view(), name='signup'),
path('login/', views.UserLoginView.as_view(), name='login'),
path('logout/', authViews.LogoutView.as_view(), name='logout'),
path('<slug:username>/profile/', views.UserUpdateView.as_view(), name='user_update'),}
Ошибка в шаблоне выдается: Сообщение об ошибке:
NoReverseMatch в /
Обратное для 'user_update' с аргументами '(' kkdsjfsdifisdfj@gmail.com ' ,)' не найдено. 1 шаблон (ов)> пробовал: ['account / (? P [-a-zA-Z0-9 _] +) / profile / $']
Я думаю о том, чтобы запретить пользователям использовать специальный символ в поле Имя пользователя при регистрации. Где я не прав?