django - Django Auth:“此字段是必需的”
问题描述
我想将我自己的表单集成到 django Auth 系统中。它总是抛出一个错误:
登录 此字段为必填项。密码 此字段为必填项。
设置调试点if request.method == 'POST':
不起作用(页面启动/加载除外)。
设置.py:
AUTH_USER_MODEL = 'Immo.ImmoUser'
ImmoUser 类:
from django.contrib.auth.models import AbstractUser
class ImmoUser(AbstractUser):
pass
形式:
<form class="form-signin" action="index" method="post" style="/*! height: 100%; */margin-top: 20%;">
<img class="mb-4" src="{% static 'Immo/images/houses.png' %}" style="background-color: black; padding: 5px;border-radius: 10px;" alt="" width="72" height="72">
<h1 class="h3 mb-3 font-weight-normal">Please sign in</h1>
{% csrf_token %}
{{ form.errors }}
<label class="sr-only" for="{{ form.username.auto_id }}">{{ form.username.label }}:</label>
<input id="{{ field.username }}" class="form-control" style="margin-bottom:3px;" autofocus="" placeholder="Login*" required="" type="text">
<label class="sr-only" for="{{ form.password.auto_id }}">{{ form.password.label }}:</label>
<input id="{{ field.password }}" class="form-control" style="margin-bottom:3px;" autofocus="" placeholder="Password*" required="" type="password">
<button class="btn btn-lg btn-primary btn-block" type="submit">Sign in</button>
<p class="mt-5 mb-3 text-muted">© 2017-2018</p>
</form>
视图.py:
def mylogin(request):
if request.method == 'POST':
form = UserCreationForm(request.POST)
if form.is_valid():
form.save()
username = form.cleaned_data.get('username')
password = form.cleaned_data.get('password')
user = authenticate(username=username, password=raw_password)
return redirect('Immo/user/index')
else:
form = UserCreationForm()
return render(request, 'Immo/index.html', {'form': form} )
编辑: 这有效:
<form class="form-signin" action="index" method="post" style="/*! height: 100%; */margin-top: 20%;">
<img class="mb-4" src="{% static 'Immo/images/houses.png' %}" style="background-color: black; padding: 5px;border-radius: 10px;" alt="" width="72" height="72">
<h1 class="h3 mb-3 font-weight-normal">Please sign in</h1>
{% csrf_token %}
{{ form.errors }}
<label class="sr-only" for="{{ form.login.auto_id }}">{{ form.login.label }}:</label>
<input name="login" id="{{ form.login.auto_id }}" class="form-control" style="margin-bottom:3px;" autofocus="" placeholder="Login*" required="" type="text">
<label class="sr-only" for="{{ form.password.auto_id }}">{{ form.password.label }}:</label>
<input name="password" id="{{ form.password.auto_id }}" class="form-control" style="margin-bottom:3px;" autofocus="" placeholder="Password*" required="" type="password">
<button class="btn btn-lg btn-primary btn-block" type="submit">Sign in</button>
<p class="mt-5 mb-3 text-muted">© 2017-2018</p>
</form>
解决方案
您缺少以下属性名称inputs
:
<input name="username" ...>
<input name="password" ...>
推荐阅读
- javascript - 仅显示 ReactJs 中 api 数据中的每 4 个项目
- html - React Material UI - 网格列高度属性
- c# - 使用 Android 应用程序操作日历事件
- go - 记录 http.ResponseWriter 内容
- javascript - Ionic/Capacitor iOS App 不会从第三方源加载脚本
- javascript - 如何在 JavaScript 中解析时间?
- python - 绘制从 xarray 数据集到 AxesGrid 的子图
- flutter - 使用令牌和云函数的最佳 FCM 方法
- prolog - 解释基本 Prolog 结果
- angular - 从 JAX-RS ContainerRequestFilter 重定向到 Angular 路由