DoesNotExist в /register/ Пользователь, соответствующий запросу, не существует
У меня есть некоторые проблемы, с которыми я никогда не сталкивался на этапе разработки. Когда пользователи выполняют некоторые действия, я иногда получаю следующую ошибку.
Что меня действительно расстраивает, так это то, что проект прекрасно работает в локальной среде, и более того, соответствующий объект запроса НЕ существует в базе данных. А также мои поля password1 и password2 не появляются в таблице базы данных, даже если я создал их в form.py.
Я не понял ваш вопрос правильно. Поэтому я просто написал для вас пример проекта.
urls.py
path('login/', user_views.CustomLoginView.as_view(), name='user-login'),
path('logout/', LogoutView.as_view(), name='logout'),
path('register/', user_views.RegisterView.as_view(), name='user-register'),
forms.py
class CustomUserChangeForm(UserCreationForm):
email = forms.EmailField(required=True)
profile_image = forms.ImageField(required=False)
class Meta:
model = User
fields = ("username", "first_name", "last_name", "email",)
def __init__(self, *args, **kwargs):
super(CustomUserChangeForm, self).__init__(*args, **kwargs)
self.fields['first_name'].widget.attrs['class'] = 'form-control'
self.fields['first_name'].widget.attrs['pattern'] = '[a-zA-Z]+'
self.fields['first_name'].required = True
self.fields['last_name'].widget.attrs['class'] = 'form-control'
self.fields['last_name'].widget.attrs['pattern'] = '[a-zA-Z]+'
self.fields['last_name'].required = True
self.fields['username'].widget.attrs['class'] = 'form-control'
self.fields['email'].widget.attrs['class'] = 'form-control'
self.fields['password1'].widget.attrs['class'] = 'form-control'
self.fields['password2'].widget.attrs['class'] = 'form-control'
self.fields['profile_image'].widget.attrs['class'] = 'form-control'
self.fields['first_name'].widget.attrs['placeholder'] = 'First Name'
self.fields['last_name'].widget.attrs['placeholder'] = 'Last Name'
self.fields['username'].widget.attrs['placeholder'] = 'Enter your username'
self.fields['email'].widget.attrs['placeholder'] = 'Enter your email'
self.fields['password1'].widget.attrs['placeholder'] = 'Enter your password'
self.fields['password2'].widget.attrs['placeholder'] = 'Enter confirm password'
self.fields['password2'].widget.attrs['data-v-equal'] = '#id_password1'
view.py
class CustomLoginView(LoginView):
def form_valid(self, form):
"""Security check complete. Log the user in."""
auth_login(self.request, form.get_user())
return HttpResponseRedirect(self.get_success_url())
class RegisterView(generic.FormView):
template_name = 'registration/register.html'
form_class = CustomUserChangeForm
success_url = '/login'
def form_valid(self, form):
base = form.save()
UserProfile.objects.create(
user=base,
profile_image=form.cleaned_data.get('profile_image')
)
return HttpResponseRedirect(self.get_success_url())