使用用户输入在Django中创建用户

使用用户输入在Django中创建用户,django,Django,我想使用用户输入在Django中创建/添加新用户到我的应用程序。我使用的是django提供的默认登录名。我正在尝试将用户添加到默认登录。例如: 传递用户名和密码。但我希望用户输入也能做到这一点。我该怎么做 需要一些指导 我试过这个,但似乎不起作用: def lexusadduser(request): """ add user """ if request.method == "POST": user.save() auth_us

我想使用用户输入在Django中创建/添加新用户到我的应用程序。我使用的是django提供的默认登录名。我正在尝试将用户添加到默认登录。例如:

传递用户名和密码。但我希望用户输入也能做到这一点。我该怎么做

需要一些指导

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

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') 

使用表格。此处的空气编码:

class SignupForm(forms.Form):
    username = forms.CharField()
    email = forms.EmailField()
    password = forms.CharField(widget=forms.PasswordInput)

您需要做的第一件事是创建一个:

forms.py

from django.contrib.auth.models import User

class UserForm(ModelForm):
    class Meta:
        model = User
        fields = ('username', 'email', 'password')
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}) 
模型表单根据您提供的模型自动生成表单。它根据字段处理验证

视图.py

from django.contrib.auth.models import User

class UserForm(ModelForm):
    class Meta:
        model = User
        fields = ('username', 'email', 'password')
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请求,我们会发送一份干净的表单

模板

<form method="post" action="">
    {% csrf_token %}
    {{ form }}
    <input type="submit" value="Create new user account" />
</form>

{%csrf_令牌%}
{{form}}

这不会将用户添加到默认权限。这就像创建一个新模型,对吗?如果我错了,请纠正我…@lakesh:Naddiseo建议在你的视野内使用一种形式,但是这个答案非常模糊,所以我并不奇怪你对它不清楚。这不是一个新的模型。这个例子有明显的错误。您希望通过此视图实现什么逻辑?我正在尝试添加一个新用户,如果添加了,请将其发送到主页,否则请将其发送回添加用户页面…我了解这一部分,但您试图通过身份验证实现什么?您正在保存一个不存在的
用户
对象,然后您正在验证该不存在的变量。我理解问题所在。。。但是我如何获取用户输入并使用它添加新用户,如果添加了,则将其发送到主页,否则将其发送回添加用户页面。。需要一些帮助…这个答案对我很有用,但不完整。表单模板应包括CSRF令牌代码和提交按钮。我将继续编辑它们。请注意,此表单在默认情况下并不美观,但可以正常工作。让它看起来好看不在问题的范围内。更多信息可在此处获得: