首页 > 解决方案 > 当在字段中输入按钮单击按钮时,Django UserCreationForm 没有响应

问题描述

我无法让我在 Django 中的注册应用程序正常工作。我正在使用内置的 UserCreationForm 表单。我可以转到 URL 并显示表单,但是当我将信息放入字段并单击提交按钮时,没有任何反应。它应该会弹出一个错误屏幕,显示“缺少 csrf_field”(我知道这一点是因为我正在关注 TechWithTim 的教程,而这就是发生在他身上的事情)。但是当我点击“注册”按钮时,什么也没有发生。

视图.py:

from django.shortcuts import render
from django.contrib.auth.forms import UserCreationForm

# Create your views here.
def register(response):
    form = UserCreationForm()
    return render(response, "register/register.html", {"form":form})

注册.html:

{% extends "main/base.html" %}

{% block title %}Create an Account{% endblock %}

{% block content %}
    <form method="POST" class="form-group">
        {{form}}
        <button type="submit" class="btn btn-success">Register</button>
    </form>
{% endblock %}

网址.py:

from django.contrib import admin
from django.urls import path, include
from register import views as v

urlpatterns = [
    path('', include("main.urls")),
    path("register/", v.register, name="register"),
    path('admin/', admin.site.urls),
]

主/urls.py

from django.urls import path

from . import views

urlpatterns = [
path("<int:id>", views.index, name='index'),
path("", views.home, name='home'),
path("create/", views.create, name='create'),
]

我也将应用程序添加到了我的 settings.py 文件中。

这是我在这里的第一个问题,我试图正确格式化它,如果我没有,很抱歉

标签: pythondjango

解决方案


为了让 Django 接收用户在表单中输入的数据,您需要将请求的 POST 数据传递给表单(如果存在)。看起来像这样:

form = UserCreationForm(response.POST)

但请注意,response.POST如果它不是 POST 请求,它将不存在。(例如,如果用户是第一次查看表单。)Django 文档有一个如何处理表单数据的示例。

或者,您可以查看您正在使用的教程,其中包含如何从表单中获取 POST 数据的示例:

# views.py
from django.shortcuts import render, redirect
from .forms import RegisterForm


# Create your views here.
def register(response):
    if response.method == "POST":
        form = RegisterForm(response.POST)
        if form.is_valid():
            form.save()

        return redirect("/home")
    else:
        form = RegisterForm()

    return render(response, "register/register.html", {"form":form})

来源。)


推荐阅读