我新注册的用户可以登录到我的 django 网络应用程序
My newly registered user can login to my django web app
我是社区新手。我通常只能找到我的答案,但我一直在搜索和搜索,似乎找不到任何与我正在做的事情相似的东西。我设置了一个 ModelForm 来注册新用户。我让它工作,并将信息发送到 sqlite 数据库。但是,当我尝试在其中记录新注册的用户时,它说:
"Please enter a correct username and password. Note that both fields may be case-sensitive."
login.html:
{% extends 'app/register.html' %}
{% block content %}
<h2>Login</h2>
<form method="post">
{% csrf_token %}
{{ form.as_p }}
<input type="submit" value="Login">
</form>
<a href="{% url 'index' %}">Back to Homepage</a>
<br>
<a href="{% url 'password_reset' %}">Reset password</a>
<br>
<a href="{% url 'register' %}">Register</a>
{% endblock %}
views.py
from django.contrib.auth import authenticate, login
from django.contrib.auth.models import User
from django.contrib.auth.forms import UserCreationForm
from django.contrib.auth.decorators import login_required
from datetime import datetime
from django.http import HttpRequest
from django.shortcuts import render, redirect
from django.urls import reverse
from . import forms
from django.contrib import auth
def index(request):
"""Renders the home page."""
assert isinstance(request, HttpRequest)
return render(
request,
'app/index.html',
{
'title':'Home Page',
'year':datetime.now().year,
}
)
def register(request):
if request.method == "GET":
form = forms.Registration(request.GET)
return render(
request, "app/register.html",
{"form": form}
)
elif request.method == "POST":
form = forms.Registration(request.POST)
if form.is_valid():
user = form.save()
login(request, user)
return redirect(reverse("index"))
models.py
from django.contrib.auth.models import User
from django.db import models
# Create your models here.
class Patient(models.Model):
first_name = models.CharField(max_length=100)
last_name = models.CharField(max_length=100)
#birthdate = models.DateField(auto_now=False, null=True, blank=True)
gender = models.CharField(max_length=100, blank=True)
allergies = models.TextField(blank=True)
email = models.CharField(max_length=200)
username = models.CharField(max_length=100)
password = models.CharField(max_length=100)
last_login = models.CharField(max_length=100)
和forms.py:
from django import forms
from . import models
from django.contrib.auth.forms import AuthenticationForm
from django.utils.translation import ugettext_lazy as _
from django.contrib.auth.models import User
class Registration(forms.ModelForm):
class Meta:
model = models.Patient
fields = ('first_name','last_name', 'gender', 'email', 'username', 'password', 'allergies',)
如有任何帮助,我们将不胜感激。如果我遗漏了什么,请原谅我,请告诉我。谢谢!
在视图文件的第 33 行中,您使用了 auth_login() 函数,但我找不到您导入它的位置
您是指 authentication() 还是 login() 函数?
因此,经过大量的反复试验和摆弄,我最终以这种方式修复了它,这要感谢上面 Abdul Aziz Barkat 的建议。
我将 Patient(models.Model) 更改为 Patient(AbstractUser)
然后我还必须将 Registration(forms.ModelForm) 更改为 Registration(UserCreationForm)。现在所有用户都在进行身份验证,谢谢!
我是社区新手。我通常只能找到我的答案,但我一直在搜索和搜索,似乎找不到任何与我正在做的事情相似的东西。我设置了一个 ModelForm 来注册新用户。我让它工作,并将信息发送到 sqlite 数据库。但是,当我尝试在其中记录新注册的用户时,它说:
"Please enter a correct username and password. Note that both fields may be case-sensitive."
login.html:
{% extends 'app/register.html' %}
{% block content %}
<h2>Login</h2>
<form method="post">
{% csrf_token %}
{{ form.as_p }}
<input type="submit" value="Login">
</form>
<a href="{% url 'index' %}">Back to Homepage</a>
<br>
<a href="{% url 'password_reset' %}">Reset password</a>
<br>
<a href="{% url 'register' %}">Register</a>
{% endblock %}
views.py
from django.contrib.auth import authenticate, login
from django.contrib.auth.models import User
from django.contrib.auth.forms import UserCreationForm
from django.contrib.auth.decorators import login_required
from datetime import datetime
from django.http import HttpRequest
from django.shortcuts import render, redirect
from django.urls import reverse
from . import forms
from django.contrib import auth
def index(request):
"""Renders the home page."""
assert isinstance(request, HttpRequest)
return render(
request,
'app/index.html',
{
'title':'Home Page',
'year':datetime.now().year,
}
)
def register(request):
if request.method == "GET":
form = forms.Registration(request.GET)
return render(
request, "app/register.html",
{"form": form}
)
elif request.method == "POST":
form = forms.Registration(request.POST)
if form.is_valid():
user = form.save()
login(request, user)
return redirect(reverse("index"))
models.py
from django.contrib.auth.models import User
from django.db import models
# Create your models here.
class Patient(models.Model):
first_name = models.CharField(max_length=100)
last_name = models.CharField(max_length=100)
#birthdate = models.DateField(auto_now=False, null=True, blank=True)
gender = models.CharField(max_length=100, blank=True)
allergies = models.TextField(blank=True)
email = models.CharField(max_length=200)
username = models.CharField(max_length=100)
password = models.CharField(max_length=100)
last_login = models.CharField(max_length=100)
和forms.py:
from django import forms
from . import models
from django.contrib.auth.forms import AuthenticationForm
from django.utils.translation import ugettext_lazy as _
from django.contrib.auth.models import User
class Registration(forms.ModelForm):
class Meta:
model = models.Patient
fields = ('first_name','last_name', 'gender', 'email', 'username', 'password', 'allergies',)
如有任何帮助,我们将不胜感激。如果我遗漏了什么,请原谅我,请告诉我。谢谢!
在视图文件的第 33 行中,您使用了 auth_login() 函数,但我找不到您导入它的位置 您是指 authentication() 还是 login() 函数?
因此,经过大量的反复试验和摆弄,我最终以这种方式修复了它,这要感谢上面 Abdul Aziz Barkat 的建议。
我将 Patient(models.Model) 更改为 Patient(AbstractUser)
然后我还必须将 Registration(forms.ModelForm) 更改为 Registration(UserCreationForm)。现在所有用户都在进行身份验证,谢谢!