如何通过Django正确登录用户
我正在尝试登录Django中的用户。如果我使用下面的代码,一切正常如何通过Django正确登录用户,django,Django,我正在尝试登录Django中的用户。如果我使用下面的代码,一切正常 def login(request): return render(request, 'web/login.html') def home(request): if request.method == 'POST': if Member.objects.filter(username=request.POST['username'], password=request.POST['passwor
def login(request):
return render(request, 'web/login.html')
def home(request):
if request.method == 'POST':
if Member.objects.filter(username=request.POST['username'], password=request.POST['password']).exists():
member = Member.objects.get(username=request.POST['username'], password=request.POST['password'])
return render(request, 'web/home.html', {'member': member})
else:
context = {'msg': 'Invalid username or password'}
return render(request, 'web/login.html', context)
在这里,我试图通过使用clean_data处理数据来执行相同的登录,但它给出了错误:
视图webApp.views.home未返回HttpResponse对象。它没有返回任何结果
这是否意味着我的表单数据为空或未发布
我有一个朋友,但没有运气
代码如下:
def login(request):
return render(request, 'web/login.html')
def home(request):
if request.method == 'POST':
form = loginForm(request.POST)
# check whether it's valid:
if form.is_valid():
# process the data in form.cleaned_data as required
username = form.cleaned_data['username']
password = form.cleaned_data['password']
#if len(username) < 5 || len(password) < 5:
if Member.objects.filter(username=username, password=password).exists():
member = Member.objects.get(username=username, password=password)
return render(request, 'web/home.html', {'member': member})
print("success")
else:
context = {'msg': 'Invalid username or password'}
return render(request, 'web/login.html', context)
print('failed')
def登录(请求):
返回呈现(请求'web/login.html')
def home(请求):
如果request.method==“POST”:
form=loginForm(request.POST)
#检查它是否有效:
如果form.is_有效():
#根据需要处理form.U数据中的数据
username=form.cleaned_数据['username']
password=表单。已清除的_数据['password']
#如果len(用户名)<5 | | len(密码)<5:
如果Member.objects.filter(用户名=用户名,密码=密码).exists():
member=member.objects.get(用户名=用户名,密码=密码)
返回呈现(请求'web/home.html',{'member':member})
打印(“成功”)
其他:
上下文={'msg':'Invalid username或password'}
返回呈现(请求'web/login.html',上下文)
打印('失败')
错误的基本思想是,Django中的任何视图都必须返回HttpResponse
或类似对象。在您的视图中,您不会一直返回HttpResponse
。也就是说,程序执行不会进入代码的if…
子句中。并且执行不能进入else..
子句,除非您定义它们。因此,我添加了一些其他
条件。
试试这个
def home(请求):
如果request.method==“POST”:
form=loginForm(request.POST)
#检查它是否有效:
如果form.is_有效():
#根据需要处理form.U数据中的数据
username=form.cleaned_数据['username']
password=表单。已清除的_数据['password']
#如果len(用户名)< 5 | | len(密码)< 5:
如果Member.objects.filter(用户名=用户名,密码=密码).exists():
member=member.objects.get(用户名=用户名,密码=密码)
返回呈现(请求'web/home.html',{'member':member})
打印(“成功”)
其他:
上下文={'msg':'Invalid username或password'}
返回呈现(请求'web/login.html',上下文)
打印('失败')
其他:
上下文={'msg':'表单无效'}
返回呈现(请求'web/login.html',上下文)
其他:
上下文={'msg':'HTTP方法不是“POST”}
返回呈现(请求'web/login.html',上下文)
错误的基本思想是,Django中的任何视图都必须返回HttpResponse
或类似对象。在您的视图中,您不会一直返回HttpResponse
。也就是说,程序执行不会进入代码的if…
子句中。并且执行不能进入else..
子句,除非您定义它们。因此,我添加了一些其他
条件。
试试这个
def home(请求):
如果request.method==“POST”:
form=loginForm(request.POST)
#检查它是否有效:
如果form.is_有效():
#根据需要处理form.U数据中的数据
username=form.cleaned_数据['username']
password=表单。已清除的_数据['password']
#如果len(用户名)< 5 | | len(密码)< 5:
如果Member.objects.filter(用户名=用户名,密码=密码).exists():
member=member.objects.get(用户名=用户名,密码=密码)
返回呈现(请求'web/home.html',{'member':member})
打印(“成功”)
其他:
上下文={'msg':'Invalid username或password'}
返回呈现(请求'web/login.html',上下文)
打印('失败')
其他:
上下文={'msg':'表单无效'}
返回呈现(请求'web/login.html',上下文)
其他:
上下文={'msg':'HTTP方法不是“POST”}
返回呈现(请求'web/login.html',上下文)
def home(request):
if request.method == 'POST':
form = loginForm(request.POST)
# check whether it's valid:
if form.is_valid():
# process the data in form.cleaned_data as required
username = form.cleaned_data['username']
password = form.cleaned_data['password']
# if len(username) < 5 || len(password) < 5:
if Member.objects.filter(username=username, password=password).exists():
member = Member.objects.get(username=username, password=password)
return render(request, 'web/home.html', {'member': member})
print("success")
else:
context = {'msg': 'Invalid username or password'}
return render(request, 'web/login.html', context)
print('failed')
else:
context = {'msg': 'Form is not valid'}
return render(request, 'web/login.html', context)
else:
context = {'msg': 'HTTP method is not "POST"'}
return render(request, 'web/login.html', context)