Джанго Ajax проверки формы - PullRequest
0 голосов
/ 21 октября 2019

Я хочу сделать проверку формы ajax для отображения ошибок. Я посмотрел много примеров, но некоторые из них старые и не работают, а другие я не понимаю. Ниже приведен код, пожалуйста, помогите с реализацией запросов ajax.

views.py

def register(request):
if request.method == 'POST':
    user_form = UserRegistrationForm(request.POST)
    if user_form.is_valid():
        # Create a new user object but avoid saving it yet
        new_user = user_form.save(commit=False)
        # Set the chosen password
        new_user.set_password(user_form.cleaned_data['password'])
        # Save the User object
        new_user.save()
        return HttpResponse('IZI')
    else:
        print(user_form.errors)
        user_form = UserRegistrationForm()
        # errors = user_form.errors
        data = {'user_form': user_form, 'errors': user_form.errors}
        return render(request, 'registration.html', data)
        # return HttpResponse(simplejson.dumps(errors))
else:
    user_form = UserRegistrationForm()
return render(request, 'registration.html', {'user_form': user_form})

models.py

class TestUser(AbstractUser):
phone = PhoneNumberField(null=False, blank=False, unique=True)

class Meta:
    db_table = '"fyzzys"."users"'

forms.py

class UserRegistrationForm(forms.ModelForm):
password = forms.CharField(label='Password', widget=forms.PasswordInput)
password2 = forms.CharField(label='Repeat password', widget=forms.PasswordInput)
phone = PhoneNumberField(region='RU', required='true')
email = forms.CharField(error_messages='')

class Meta:
    model = TestUser
    fields = ('username', 'first_name', 'email', 'phone')

def clean_password2(self):
    cd = self.cleaned_data
    if cd['password'] != cd['password2']:
        raise forms.ValidationError('Passwords don\'t match.')
    return cd['password2']

1 Ответ

0 голосов
/ 21 октября 2019

Вот пример, но вам нужно будет адаптировать его к вашим потребностям и к вашему коду:

<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js">
$.ajax({
        url: 'your_url_for_register_view',
        data: { password : 'your_password',
                password2 : 'your_password',
                phone : 'your_phone',
                email : 'your_email',
                csrfmiddlewaretoken : {{ csrf_token }},
              },
        success: function (data) {
            //do something if successful
        }
      });
</script>

Согласно документации: https://simpleisbetterthancomplex.com/tutorial/2016/08/29/how-to-work-with-ajax-request-with-django.html

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...