Кнопка Submit не обновляет страницу и не отправляет POST-запрос

Я делаю регистрацию на Django. Сделал форму, добавил кнопку, которая должна обновлять страницу и отправлять POST-запрос. Но кнопка не обновляет страницу и не отправляет запрос. У меня нет никаких скриптов на JavaScript. Мой код views.py:

from django.shortcuts import render, redirect
from .models import User
from .forms import UserForm
from django.views import View

def index(request): 
    return render(request, 'index.html')

def inn(request):
    return render(request, 'in.html')

class PostCreate(View):    
    def up(self, request):
        form=UserForm(request.POST)
        if form.is_valid():
        form.save()
        return redirect('home')

    def down(request):
        return render(request, 'up.html')`

Мой код forms.py:

from .models import User
from django.forms import ModelForm

class UserForm(ModelForm):
    class Meta:
        model=User
        fields=['NickName', 'Email', 'Password']`

И HTML: HTML

Я пытался найти любую информацию в интернете, но нашел только про event.preventDefault() и type='button'. Но у меня нет никаких скриптов, и мой тип - 'submit'

Вы не написали <form>, а вместо этого написали <field>, поэтому форма не работает, и кнопка не отправляется.

But that is not the only problem: you used .up(…) and .down(…) as methods in your view. A default view has a .get(…), .post(…) and other HTTP methods as names. You can make the work even more convenient by using a CreateView [Django-doc]:

from django.urls import reverse_lazy
from django.views.generic.edit import CreateView


class PostCreateView(CreateView):
    form_class = UserForm
    template_name = 'up.html'
    success_url = reverse_lazy('home')

Примечание: В Django представления, основанные на классах (CBV), часто имеют суффикс …View, чтобы избежать столкновения с именами моделей. Поэтому вы можете переименовать класс представления в PostCreateView, вместо PostCreate.

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