接受用户输入在 Django 中创建用户

2023-11-21

我想使用用户输入在 Django 中创建/添加新用户到我的应用程序。我使用 django 提供的默认登录。我正在尝试将用户添加到默认登录。中的例子https://docs.djangoproject.com/en/dev/topics/auth/:

>>> from django.contrib.auth.models import User
>>> user = User.objects.create_user('john', '[email protected]', 'john password')

传递用户名和密码。但我希望这种情况发生在用户输入的情况下。我该怎么做呢?

需要一些指导...

我尝试了这个,但似乎不起作用:

def lexusadduser(request):
    """
    add user
    """
    if request.method == "POST":
        user.save()

        auth_user = authenticate(username=user.username,password=user.password)

        if auth_user is not None:
            lexusmain(request)
        else:
            return render('adduser.html') 

您需要做的第一件事是创建一个模型表单:

forms.py

from django.contrib.auth.models import User

class UserForm(ModelForm):
    class Meta:
        model = User
        fields = ('username', 'email', 'password')

ModelForm 自动根据您提供的模型构建表单。它根据字段处理验证。

views.py

from forms import UserForm
from django.contrib.auth import login
from django.http import HttpResponseRedirect

def lexusadduser(request):
    if request.method == "POST":
        form = UserForm(request.POST)
        if form.is_valid():
            new_user = User.objects.create_user(**form.cleaned_data)
            login(new_user)
            # redirect, or however you want to get to the main view
            return HttpResponseRedirect('main.html')
    else:
        form = UserForm() 

    return render(request, 'adduser.html', {'form': form}) 

如果它是 POST 请求,我们会根据 POST 值创建一个 UserForm。然后我们检查它是否是有效的表单。如果是,我们创建用户,否则我们返回带有错误的表单。如果不是 POST 请求,我们会发送一个干净的表单

template

<form method="post" action="">
    {% csrf_token %}
    {{ form }}
    <input type="submit" value="Create new user account" />
</form>
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

接受用户输入在 Django 中创建用户 的相关文章

随机推荐