python - django中的用户注册表单没有注册
问题描述
我正在尝试注册 django 网站的用户,但没有注册我正在发布代码,请帮助我
这是views.py的代码,我在其中得到输入
from django.shortcuts import render , redirect
# Create your views here.
from django.contrib.auth import login
from django.contrib.auth.forms import UserCreationForm
from .models import User_Main
def become_user(request):
if request.method == 'POST':
form = UserCreationForm(request.POST)
if form.is_valid():
user = form.save()
login(request , user)
user_main = User_Main.objects.create(name = user.username, created_by=user)
return redirect('home')
else:
form = UserCreationForm()
return render(request, 'user_of_ecommerce/become_user.html' ,{'form':form})
urls.py 的代码
from django.urls import path
from . import views
urlpatterns = [
path('become-user/' , views.become_user , name="become_user")
]
这是表格的代码
{% extends "core_of_ecommerce/base.html" %}
{% block content %}
<form action="." method="post" >
{% csrf_token %}
{{form.as_p}}
<div>
<button>sbmot</button>
</div>
</form>
{% endblock content %}
另一个 URLs.py
from django.urls import path
from . import views
urlpatterns = [
path('' ,views.home, name='home')
]
模型.py
from django.db import models
# Create your models here.
from django.contrib.auth.models import User
class User_Main(models.Model):
name = models.CharField(max_length = 150)
created_at = models.DateTimeField( auto_now_add=True)
created_by = models.OneToOneField(User, on_delete=models.CASCADE , related_name='user_name')
class Meta:
ordering = ['name']
def __str__(self):
return self.name
当我在输入所有详细信息后单击按钮时,它会将我刷新到同一页面我希望你能帮助我,我什至从管理面板检查它没有注册
解决方案
您的模板导致此问题,因为您没有正确提交,请更改按钮提交
<form action="{% url 'login' %}" method="post">
{% csrf_token %}
{{form.as_p}}
<div>
<input type="submit" value="Register">
</div>
</form>
至于操作,最好创建一个名为 login 的 url 来处理登录视图
更新
好的,让我们这样做,用这个替换你的注册视图,
def become_user(request):
if request.method == 'POST':
form = UserCreationForm(data=request.POST)
if form.is_valid():
user = form.save()
return redirect('home')
else:
form = UserCreationForm()
return render(request, 'user_of_ecommerce/become_user.html' ,{'form':form})
并验证用户是否已保存(在您的管理页面中),然后我们担心登录。
一旦保存工作,修改你的视图是这样的:
from django.contrib.auth import authenticate, login
def become_user(request):
if request.method == 'POST':
form = UserCreationForm(data=request.POST)
if form.is_valid():
user = form.save()
cd = form.cleaned_data
user = authenticate(username=cd['username'], password=cd['password1']) #new line
login(request, user, backend='django.contrib.auth.backends.ModelBackend') #new line
return redirect('home')
else:
form = UserCreationForm()
return render(request, 'user_of_ecommerce/become_user.html' ,{'form':form})
推荐阅读
- c++ - 如何通过本身是类成员的指针调用成员函数
- c# - AWS Beanstalk 使用 nlp 模型读取文件夹的完整路径
- python - 删除 dbf 文件/lib 中的空格
- google-cloud-platform - GCP 的 Cloud DLP 是否也保护 GCP Cloud Source Repositories 中的数据?
- python - 如何使用多个出现的切片索引实现快速 numpy 数组计算?
- javascript - 在 React 中处理复选框
- java - 如何在 dynamodb 中使用 updateItem 更新存在属性并在不存在时创建一个新属性?
- google-apps-script - Google Script - 为多个不同的电子表格设置工作表保护(带有不受保护的单元格)
- javascript - 只有在动画一完成后,我如何运行动画二?
- javascript - 使用 JavaScript 或 Python 抓取 HTML 数据