django ajax POST 404 не найден - PullRequest
       3

django ajax POST 404 не найден

1 голос
/ 18 апреля 2020

Недавно я выучил ajax, но теперь я пытаюсь реализовать его в своем проекте fjan go, но он не работает.
регистрация. js

$(document).ready(function(){
    $(document).on('submit', '#signup', function(e){
        e.preventDefault();

        var email = $('input[name="email"]').val();
        var name = $('input[name="name"]').val();
        var password1 = $('input[name="password1"]').val();
        var password2 = $('input[name="password2"]').val();


    var url = '/signup'
    var req = new XMLHttpRequest();
       req.onreadystatechange = function() {
          if (this.readyState == 4 && this.status == 200) {
                if(req.responseText == 'true' ){
                    alert('account created')
                }
          }
       };
       req.open("POST", url, true);
       req.send();
    })
});

urls.py


urlpatterns = [
    path('',login_required(StockView.as_view(), login_url='login'), name='stock'),
    path('login/', LoginView.as_view(), name='login'),
    path('signup/', SignupView.as_view(), name='signup'),
    path('logout',LogoutView.as_view(), name='logout'),
    path('addproduct/', login_required(AddProduct.as_view(), login_url='login'), name='addproduct'),
    path('update/<int:pk>', login_required(EditProduct.as_view(), login_url='login'), name='editproduct'),
    path('delete/', login_required(DeleteProducts.as_view(), login_url='login'), name='deleteproducts'),


view.py


class SignupView(TemplateView):
    template_name = 'stock/signup.html'

    def get(self, request):
        form = SignUpForm()
        args = {'form': form}

        return render(request, self.template_name, args)

    def post(self, request):
        form = SignUpForm(request.POST)
        if form.is_valid():
            form.save()
            username = form.cleaned_data.get('username')
            raw_password = form.cleaned_data.get('password1')
            user = authenticate(username=username, password=raw_password)
            login(request, user)
            return redirect('home')
        else:
            args = {'form': form}
            return render(request, self.template_name, args)

form.py

class SignUpForm(UserCreationForm):
    username = forms.CharField(max_length=30,widget=forms.TextInput(attrs={'class':'form-control','name':'name'}))
    email = forms.EmailField(widget=forms.EmailInput(attrs={'class':'form-control'}))
    password1 = forms.CharField(widget=forms.PasswordInput(attrs={'class':'form-control'}),help_text='Password Should Match',label='Password')
    password2 = forms.CharField(widget=forms.PasswordInput(attrs={'class':'form-control'}),label='Password Confirmation')

    class Meta:
        model = AppUser
        fields = ('username', 'email', 'password1', 'password2' )

шаблон. html

  <form method="post" id="signup" >
    {% csrf_token %}
    {{ form.as_p }}
    <button type="submit" class="btn btn-primary" >Signup</button>
  </form>
</div>
<script src="{% static 'assets/signup.js' %}"></script>

ОШИБКА КОНСОЛИ :
регистрация. js: 21 ПОСТ http://127.0.0.1: 8000 / регистрация 404 (не найдено)
(анонимно) @ регистрация. js: 21
рассылка @ jquery -2.1.4. js: 4435
elemData .handle @ jquery -2.1.4. js: 4121

1 Ответ

0 голосов
/ 18 апреля 2020

Попробуйте отправить токен csrf, так как вы пытаетесь отправить данные, используя метод POST. Проверьте форму, и вы получите скрытый тег ввода csrf_token, включите его в себя ajax.

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