Кнопка 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