django 管理员用户模型

ruyhziif  于 2023-03-04  发布在  Go
关注(0)|答案(1)|浏览(233)

当我使用UserCreationForm注册时,我的管理员用户模型不更新新记录。
Access the github code
在我导入的视图中,Usercreationform如下所示,我做了所有视图的编码。我不知道哪里出错了。我也正确地将表单呈现到模板中。但是烦人的部分是在填写表单后出现的。它在管理面板中不会更新,一旦我访问它

// View file:

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

def home(request):
    if request.method == "POST":
        form = UserCreationForm(request.POST)
        if form.is_valid():
            form.save()
    context = {'form':form}
    return render(request, 'main/index.html', context)

// Template file:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>
    <form action="" method="POST">
        {% csrf_token %}
        {{form.as_p}}
        <input type="submit" value="register">
    </form>
</body>
</html>
nuypyhwy

nuypyhwy1#

摘自以下文件:
在成功处理POST数据后,你应该返回一个HttpResponseRedirect。这个技巧不是Django特有的;总来说,这是一种很好的Web开发实践。
所以试试下面的观点:

from django.shortcuts import redirect

def home(request):
    if request.method == "POST":
        form = UserCreationForm(request.POST)
        if form.is_valid():
            form.save()
            return redirect("success_page")
        else:
            return redirect("some_error_page")
    else:
        form = UserCreationForm()
    return render(request, 'main/index.html', {'form':form})

def success(request):
    return render(request, 'main/success.html')

您的urls.py应该是:

urlpatterns=[
    path('', v.home, name='home')
    path('success/', v.success, name='success_page')
]

success.html

<body>
    <h1> The form has been successfully submitted. </h1>
    
    <a href="{% url 'home' %}"> Go to homepage </a>
</body>

相同的URL模式和HTML页面,如果表单无效,可以显示错误。
您也可以删除空的action属性,因为Django默认使用当前页面路径,所以模板应该是这样的:

<form method="POST">
        {% csrf_token %}
        {{form.as_p}}
        <input type="submit" value="register">
</form>

相关问题