Почему моя Django FormModel не отправляется, когда я нажимаю кнопку submit?
Я работаю над простыми страницами входа и регистрации на Django.
Вот как они работают:
Вы создаете аккаунт на странице регистрации. После завершения процесса она перенаправляет вас на страницу входа.
Однако, когда вы нажимаете кнопку для отправки информации на странице регистрации, она не отправляется.
Вот коды:
urls.py
from django.urls import path, include
from . import views
urlpatterns = [
path('account/login', views.login_page, name='login'),
path('account/signup', views.signup_page, name='signup')
]
models.py
from django.db import models
class User(models.Model):
username = models.CharField(max_length=30,)
password = models.CharField(max_length=255)
firstName = models.CharField(max_length=255)
lastName = models.CharField(max_length=255)
emailAddress = models.EmailField(max_length=255)
def __str__(self):
return self.username
forms.py
from .models import User
from django.forms import ModelForm, TextInput, PasswordInput, EmailInput
class UserForm(ModelForm):
class Meta:
model = User
fields = ['username',
'password',
'firstName',
'lastName',
'emailAddress']
widgets = {
'username': TextInput(attrs={
'class': 'signup_input',
'placeholder': 'Username'
}),
'password': PasswordInput(attrs={
'class': 'signup_input',
'placeholder': 'Password'
}),
'firstName': TextInput(attrs={
'class': 'signup_input',
'placeholder': 'First Name'
}),
'lastName': TextInput(attrs={
'class': 'signup_input',
'placeholder': 'Last Name'
}),
'emailAddress': EmailInput(attrs={
'class': 'signup_input',
'placeholder': 'Email Address'
})
}
labels = {
'username': '',
'password': '',
'firstName': '',
'lastName': '',
'emailAddress': ''
}
views.py
from django.shortcuts import render, redirect
from .forms import UserForm
def login_page(request):
return render(request, 'Account/login_page.html')
def signup_page(request):
if request.method == 'POST':
form = UserForm(request.POST)
form.save()
return redirect('login')
else:
form = UserForm()
context = dict()
context['form'] = form
return render(request, 'Account/signup_form.html', context=context)
signup_page.html
{% load static %}
<!DOCTYPE html>
<head>
<style>
* {
box-sizing: border-box;
}
html {
min-height: 100%;
height: 100%;
margin: 0;
}
body {
height: 100%;
padding: 1px;
margin: 0;
}
#signup_form_container {
height: 600px;
width: 450px;
border: 1px black solid;
margin-left: auto;
margin-right: auto;
margin-top: 100px;
}
.signup_input {
display: block;
height: 46px;
width: 250px;
margin-left: auto;
margin-right: auto;
margin-top: 15px;
border-radius: 15px;
}
.signup_btn {
display: block;
height: 46px;
width: 250px;
border-radius: 15px;
margin-left: auto;
margin-right: auto;
}
</style>
</head>
<body>
<div id="signup_form_container">
{% block form%}
{% endblock %}
<input type="submit" class="signup_btn" value="Submit"/>
<button class="signup_btn">Cancel</button>
</div>
</body>
signup.form.html
{% extends 'Account/signup_page.html' %}
{% block form %}
<form method="post" action={% url 'signup' %}>{% csrf_token %}
{{form}}
</form>
{% endblock %}
Все работает нормально, кроме отправки информации. Когда я нажимаю кнопку отправки, ничего не происходит. Похоже, что метод post по какой-то причине работает неправильно. Я искал в Google и проверял свои коды, чтобы выяснить, нет ли там чего-то недостающего, но не смог найти решение этой проблемы. Буду очень признателен, если кто-нибудь сможет решить эту проблему!
Кнопка submit должна содержаться в теге <form>
для отправки формы при нажатии. Переместите кнопку в signup.form.html
и удалите ее из signup_page.html
signup.form.html
{% extends 'Account/signup_page.html' %}
{% block form %}
<form method="post" action={% url 'signup' %}>{% csrf_token %}
{{form}}
<input type="submit" class="signup_btn" value="Submit"/>
</form>
{% endblock %}