在Django注册中,如果用户名已存在,请执行某些操作

时间:2015-01-09 16:18:30

标签: python django django-authentication

这是Django中一个非常基本和快速的问题。

所以在我的观点中,我正在处理注册,如果用户试图注册 使用已经存在的用户名我想只是给出一条消息,比如旁边的一个范围 形式,说,“错误的用户名”。

如何打印该讯息?

谢谢。

这是我的代码部分:

def register(request):
 if request.method == 'POST':
  if User.objects.filter(username = request.POST['username']).exists():
   #I want to show next to the username textfield in registration form,
   #a span for example that says "Wrong Username"

4 个答案:

答案 0 :(得分:0)

正如上面评论中所建议的那样,您应该使用表单的简洁方法来实现,这样可以使事情变得更容易。但如果你必须在视图中这样做,这是一个例子:

if request.method == 'POST':
    try:
        user_exists = User.objects.get(username=request.POST['username'])
        return HttpResponse("Username already taken")
    except User.DoesNotExist:
        # Username doesn't exist
        # Do other validation ...

然后使用jQuery或其他东西在span中显示响应。

答案 1 :(得分:0)

要获取HTTPResponse消息,您必须使用ajax而不是表单提交。

这里我假设您正在使用以下类似html页面代码。

<input type="text" name="username" id="username"/>  <p id="error"></p>

<input type="button" value="Register" id="register">

现在,你必须在按钮的点击事件上进行ajax调用,如:

  

(我假设您了解ajax电话。)

$("#register").on('click', function(){

var username=$("#username").val();

    $.ajax({
    .
    .
    .
    success: fuinction(data){
        if(data=="error occured"){
           $("error").append("wrong username");
    }
    }

    })

    });

和views.py代码是这样的:

def register(request):
 if request.method == 'POST':
  if User.objects.filter(username = request.POST['username']).exists():
    return HTTPResponse("error occured")

答案 2 :(得分:0)

我想从上面修改答案,这可以更容易....我认为:)哈哈:

def register(request):

    alert = {
        "username": request.GET.get('username', ''),
    }

    if request.method == 'POST':
        username = request.POST.get('username', '')

        if User.objects.filter(username = request.POST['username']).exists():
            alert['username'] = "Username already exists"


    return render(request, 'interface/signup.html', alert)

,在您的html中:只需说->

<form method="POST"> {% csrf_token %}

    <h3>Sign Up</h3>

    <label class="label">Username:</label><input type="text" name="username" class="form-control" /><br>

{% if username %}
    <div class="alert alert-danger alert-dismissible">
        <a href="#" class="close" data-dismiss="alert" aria-label="close">&times;</a>
        {{ username }}
    </div>
    <br>
{% endif %}
</form>

答案 3 :(得分:0)

def register(request):
    form = UserCreationForm(request.POST)
    if form.is_valid():

    else:
        # Form is invalid, this includes the user already existing

我知道已经晚了2年,但是没有答案,django有解决问题的内置方式。