尝试呈现我的自定义 HTML 表单时不断出现此错误
Keep getting this error when trying to render my custom HTML form
这是我从 views.py 文件中删除 else 子句时遇到的错误。
File "C:\Users\david\AppData\Local\Programs\Python\Python39\lib\site-packages\django\core\handlers\base.py", line 309, in check_response
raise ValueError(
ValueError: The view register.views.register didn't return an HttpResponse object. It returned None instead.
我猜我得到这个错误是因为没有 else 子句,我需要它,但如果我在 views.py 文件中有它,我会得到另一个错误。
这是我的视图文件:
from django.shortcuts import render,redirect
from django.contrib.auth.models import User, auth
def register(request):
if request.method == 'POST':
first_name = request.POST['first_name'],
last_name = request.POST['last_name'],
dob = request.POST['dob'],
email = request.POST['email']
newuser= User.objects.create_user(first_name=first_name,last_name=last_name, email=email)
newuser.save()
print(request.POST)
return redirect('/home')
我最初在这个底部有一个 else 子句,但那导致了不同的错误。
这是该子句:
else:
return render('/register/userinfo.html')
我得到的错误是:
File "C:\Users\david\OneDrive\Desktop\Django\Sub\register\views.py", line 4, in render
return render(request,'/register/userinfo.html')
TypeError: render() takes 1 positional argument
but 2 were given
知道什么可能导致此底部错误吗?
编辑 1: 刚刚在 return 渲染中添加了一个请求子句,但这次又出现了另一个错误:
File "C:\Users\david\AppData\Local\Programs\Python\Python39\lib\site-packages\django\template\loader.py", line 19, in get_template
raise TemplateDoesNotExist(template_name, chain=chain)
django.template.exceptions.TemplateDoesNotExist: register/userinfo.html
它似乎找不到我用于表单的模板。它的路径已设置为位于我的注册应用程序中的模板文件夹中。
编辑 2 已显示要显示的表单,但是当我提交时出现此页面未找到错误:
Page not found (404)
Request Method: POST
Request URL: http://127.0.0.1:8000/register/register
Using the URLconf defined in Main.urls, Django tried these URL patterns, in this order:
admin/
home/
about/
addinfo/
register/ [name='register']
The current path, register/register, didn’t match any of these.
第二个错误消息表明您在第 4 行的代码是这样的:
return render(request,'/register/userinfo.html')
你说你的 else 子句是:
else:
return render('/register/userinfo.html')
您确定在测试前保存并重启了您的项目吗?
否则我不知道这个错误是怎么发生的。
我建议检查渲染函数的代码,看看可能导致问题的原因。
您必须检查通往 userinfo.html
的路径。您不应该以 /
开头。试试这个:
return render(request,'userinfo.html')
这是我从 views.py 文件中删除 else 子句时遇到的错误。
File "C:\Users\david\AppData\Local\Programs\Python\Python39\lib\site-packages\django\core\handlers\base.py", line 309, in check_response
raise ValueError(
ValueError: The view register.views.register didn't return an HttpResponse object. It returned None instead.
我猜我得到这个错误是因为没有 else 子句,我需要它,但如果我在 views.py 文件中有它,我会得到另一个错误。
这是我的视图文件:
from django.shortcuts import render,redirect
from django.contrib.auth.models import User, auth
def register(request):
if request.method == 'POST':
first_name = request.POST['first_name'],
last_name = request.POST['last_name'],
dob = request.POST['dob'],
email = request.POST['email']
newuser= User.objects.create_user(first_name=first_name,last_name=last_name, email=email)
newuser.save()
print(request.POST)
return redirect('/home')
我最初在这个底部有一个 else 子句,但那导致了不同的错误。
这是该子句:
else:
return render('/register/userinfo.html')
我得到的错误是:
File "C:\Users\david\OneDrive\Desktop\Django\Sub\register\views.py", line 4, in render
return render(request,'/register/userinfo.html')
TypeError: render() takes 1 positional argument
but 2 were given
知道什么可能导致此底部错误吗?
编辑 1: 刚刚在 return 渲染中添加了一个请求子句,但这次又出现了另一个错误:
File "C:\Users\david\AppData\Local\Programs\Python\Python39\lib\site-packages\django\template\loader.py", line 19, in get_template
raise TemplateDoesNotExist(template_name, chain=chain)
django.template.exceptions.TemplateDoesNotExist: register/userinfo.html
它似乎找不到我用于表单的模板。它的路径已设置为位于我的注册应用程序中的模板文件夹中。
编辑 2 已显示要显示的表单,但是当我提交时出现此页面未找到错误:
Page not found (404)
Request Method: POST
Request URL: http://127.0.0.1:8000/register/register
Using the URLconf defined in Main.urls, Django tried these URL patterns, in this order:
admin/
home/
about/
addinfo/
register/ [name='register']
The current path, register/register, didn’t match any of these.
第二个错误消息表明您在第 4 行的代码是这样的:
return render(request,'/register/userinfo.html')
你说你的 else 子句是:
else:
return render('/register/userinfo.html')
您确定在测试前保存并重启了您的项目吗?
否则我不知道这个错误是怎么发生的。 我建议检查渲染函数的代码,看看可能导致问题的原因。
您必须检查通往 userinfo.html
的路径。您不应该以 /
开头。试试这个:
return render(request,'userinfo.html')