尝试呈现我的自定义 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')