我是python和django框架的新手。请任何人帮助我,我走错了,我做了简单的注册表和登录,这里注册表工作并存储表格数据数据库,但我无法登录并验证我的用户名和密码。提前谢谢
urls.py
from django.contrib import admin
from django.conf.urls import url
from core import views as core_views
from django.contrib.auth import views as auth_views
urlpatterns = [
url(r'^$', core_views.home, name='home'),
url(r'^signup/$', core_views.signup, name='signup'),
url(r'^login/$',
auth_views.LoginView.as_view(template_name='login.html'),
name='login'),
url(r'admin/', admin.site.urls),
]
forms.py
from django import forms
from .models import Core
class Registrationform(forms.ModelForm):
username = forms.CharField(max_length=15,label="Username")
firstname = forms.CharField(max_length=15,label="Firstname")
lastname = forms.CharField(max_length=15,label="Lastname")
email = forms.EmailField(required=True)
password = forms.CharField
(widget=forms.PasswordInput,required=True,label="Password")
password1 = forms.CharField(widget=forms.PasswordInput,
required=True,label="PasswordConfirmation")
class Meta:
model=Core
fields=
("username","firstname","lastname","email","password","password1",)
views.py
from django.shortcuts import render,redirect
from .form import Registrationform
from django.contrib import messages
from django.contrib.auth import authenticate, login
def home(request):
return render(request,'home.html')
def signup(request):
if request.method == 'POST':
form = Registrationform(request.POST)
if form.is_valid():
user=form.save()
username = form.cleaned_data.get('username')
firstname = form.cleaned_data.get('firstname')
lastname = form.cleaned_data.get('lastname')
email = form.cleaned_data.get('email')
password = form.cleaned_data.get('password')
user=authenticate(username=username,firstname=firstname,
lastname=lastname,email=email,password=password)
login(request,user)
return render(request,'home')
else:
form = Registrationform()
return render(request, 'signup.html', {'form': form})
def login(request):
if request == 'POST' :
username = request.POST['username']
password = request.POST['password1']
user=authenticate(username=username,password=password)
if user is not None:
login(request,user)
return render(request,'home.html')
else:
return render(request,"invalid.html")
else:
return render(request,'invalid.html')
的login.html
<form method="post" novalidate>
{% csrf_token %}
<input type="hidden" name="next" value="{{ next }}">
{{ form.as_p }}
<div style="text-align: center;">
<button type="submit" class="btn btn-dark">Login</button>
</form>
</div>
</div>
<div class="card-footer text-muted text-center">
New to myapp?<a href="{% url 'signup' %}"> Sign up</a>
</div>
</div>`
答案 0 :(得分:0)
Django附带了bulit app from django.contrib.auth import login, authenticate
from django.contrib.auth.forms import UserCreationForm
from django.shortcuts import render, redirect
def signup(request):
if request.method == 'POST':
form = UserCreationForm(request.POST)
if form.is_valid():
form.save()
username = form.cleaned_data.get('username')
raw_password = form.cleaned_data.get('password1')
user = authenticate(username=username, password=raw_password)
login(request, user)
return redirect('/')
else:
form = UserCreationForm()
return render(request, 'login.html', {'form': form})
。我们不需要为User明确编写模型。像下面一样更改你的代码。
{{1}}
参考:
https://docs.djangoproject.com/en/1.8/_modules/django/contrib/auth/forms/
https://docs.djangoproject.com/en/1.8/_modules/django/contrib/auth/views/
https://docs.djangoproject.com/en/1.8/_modules/django/contrib/auth/models/