python - Django:如何检查用户名是否已经存在?

标签 python django validation registration

我不是 Django 的高级用户。我在网上看到了很多不同的方法,但是它们都是针对修改模型的,或者太复杂了,我看不懂。
我在我的 MyRegistrationForm

中重用了 UserCreationForm
class MyRegistrationForm(UserCreationForm):

    email = forms.EmailField(required=True)

    class Meta:
        model = User
        fields = ('username', 'email', 'password1', 'password2')

    def save(self, commit=True):
        user = super(MyRegistrationForm, self).save(commit=False)
        user.email = self.cleaned_data['email']
        user.set_password(self.cleaned_data["password1"])

        if commit:
            user.save()

        return user

我很难理解或找到一种方法来检查用户输入的用户名是否已被占用。 所以我只是用它来将我重定向到 html,其中显示错误的用户名或密码不匹配:

def register_user(request):
    if request.method == 'POST':
        form = MyRegistrationForm(request.POST)
        if form.is_valid():
            form.save()

            return HttpResponseRedirect('/accounts/register_success')
        else:
            return render_to_response('invalid_reg.html')
  

    args = {}
    args.update(csrf(request))

    args['form'] = MyRegistrationForm()
    print args
    return render_to_response('register.html', args)

这是我的注册模板(如果需要的话):

{% extends "base.html" %}

{% block content %}

<section>
<h2 style="text-align: center">Register</h2>
<form action="/accounts/register/" method="post">{% csrf_token %}

<ul>
{{form.as_ul}}
</ul>
<input type="submit" value="Register" onclick="validateForm()"/>

</form>

</section>
{% endblock %}

但是我需要在用户被重定向之前提出某种异常或类似的东西。也许当用户按下注册时,他们会收到错误/警告,指出用户名已被占用。这可能吗?

最佳答案

您可以使用 exists :

from django.contrib.auth.models import User

if User.objects.filter(username=self.cleaned_data['username']).exists():
    # Username exists
    ...

关于python - Django:如何检查用户名是否已经存在?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29588808/

相关文章:

c++ - 简化 if else 用户输入验证

python - 从 Python 子进程调用 Perl 脚本中的 GetOptions

python在循环内任意递增迭代器

python - 如何通过 MIMEMultipart 发送电子邮件正文部分

python - Django 模型子类 - 子类中没有声明字段创建缩进错误

django - Django 中的 GenericForeignKey 和 Admin

python - 在矩阵中查找最小值的索引

python - Django 从没有外键关系的多个表中检索数据

c# - 为 TextBox 控件引发了哪些验证事件?

C++ char数组大小验证