Почему функция рендеринга в django2.2 встречается с ошибкой переполнения стека? - PullRequest
0 голосов
/ 21 апреля 2020

Я пытался создать небольшой сайт, используя Django. И я начал с функции регистра в приложении userprofile (это единственное приложение, которое я создал) структура проекта регистр пользователя, обрабатывающий функцию просмотра, выглядит следующим образом:

def user_register(request):
if request.method == 'POST':
    user_register_form = UserRegisterForm(data=request.POST)
    if user_register_form.is_valid():
        new_user = user_register_form.save(commit=False)
        # 设置密码
        new_user.set_password(user_register_form.cleaned_data['password'])
        new_user.save()
        # 保存好数据后立即登录并返回博客列表页面
        login(request, new_user)
        return redirect("article:article_list")
    else:
        return HttpResponse("注册表单输入有误。请重新输入~")
elif request.method == 'GET':
    user_register_form = UserRegisterForm()
    context = { 'form': user_register_form }
    return render(request, 'userprofile/register.html', context)
else:
    return HttpResponse("请使用GET或POST请求数据")

где base. html как показано ниже:

<!DOCTYPE html>
<!-- 网站主语言 -->
<html lang="zh-cn">

<head>
    <!-- 网站采用的字符编码 -->
    <meta charset="utf-8">
    <!-- 预留网站标题的位置 -->
    <title>{% block title %}{% endblock %}</title>
</head>

<body>
    <!-- 引入导航栏 -->
    {% include 'header.html' %}
    <!-- 预留具体页面的位置 -->
    {% block content %}{% endblock content %}
    <!-- 引入注脚 -->
    {% include 'footer.html' %}
</body>

</html>

регистр. html является расширением базы. html:

{% extends "base.html" %} {% load staticfiles %}
{% block title %} 登录 {% endblock title %}
{% block content %}
<div class="container">
    <div class="row">
        <div class="col-12">
            <br>
            <form method="post" action=".">
                {% csrf_token %}
                <!-- 账号 -->
                <div class="form-group col-md-4">
                    <label for="username">昵称</label>
                    <input type="text" class="form-control" id="username" name="username" required>
                </div>
                <!-- 邮箱 -->
                <div class="form-group col-md-4">
                    <label for="email">Email</label>
                    <input type="text" class="form-control" id="email" name="email">
                </div>
                <!-- 密码 -->
                <div class="form-group col-md-4">
                    <label for="password">设置密码</label>
                    <input type="password" class="form-control" id="password" name="password" required>
                </div>
                <!-- 确认密码 -->
                <div class="form-group col-md-4">
                    <label for="password2">确认密码</label>
                    <input type="password" class="form-control" id="password2" name="password2" required>
                </div>
                <!-- 提交按钮 -->
                <button type="submit" class="btn btn-primary">提交</button>
            </form>
        </div>
    </div>
</div>
{% endblock content %}

Результат полностью вышел из-под контроля. Она показала, что программа рендерилась в бесконечном l oop, и в конце вырвалась ошибка переполнения стека. сообщение об ошибке с print (запрос) и print (форма) подробное сообщение об ошибке

Я не был уверен, что случилось ...

...