我正在尝试用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['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对象。它返回None。
这是否意味着我的表单数据为空或未发布?
我有一个reference solution found here,但没有运气。
代码如下:
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')
答案 0 :(得分:0)
该错误的基本思想是,Django中的任何视图都必须返回 HttpResponse
或类似的对象。在您的观点中,您并不是一直都在返回HttpResponse
。也就是说,程序执行不会进入代码的 if...
子句中。并且除非您定义它们,否则执行不能进入 else..
子句。因此,我添加了一些 else
条件。
试试这个
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)