首页 > 解决方案 > 在 django 表单中输入重复的错误消息

问题描述

我试图避免在我的网站表单中出现重复的电子邮件。到目前为止,我能够做到这一点:

1.每当我输入重复的电子邮件时,它会导航回主页并且用户未保存{在我的情况下,团队未加入}。

2.在管理页面,当我尝试输入重复电子邮件时,我收到重复电子邮件地址的错误消息

我也想在我的表单中看到这条消息,但它会导航到主页。

这是我在 models.py 中的模型:

class Team(models.Model):
    username = models.CharField(max_length=100)
    email = models.EmailField(max_length=100,unique=True,error_messages={'unique':"Email already exists"})
    contact=models.IntegerField(null=False,blank=False,default=1234567890)

    def __str__(self):
        return self.username 

这是我在 forms.py 中的表格:

class TeamMembers(forms.ModelForm):
    username = forms.CharField(required=True,max_length=100)
    email = forms.EmailField(required=True,max_length=100,error_messages={'unique':"Email already exists"})
    contact=forms.IntegerField(required=True)    
    
    class Meta:
        model=Team
        fields = ['username','email','contact']

这是我在views.py 中的功能


def join_team(request):
    if request.method == "POST":
        form = TeamMembers(request.POST)

        if form.is_valid():
            form.save()
            form = TeamMembers()
            messages.success(request,"Joined team")
    else:
        form = TeamMembers()
    return render(request, 'user/join_team.html', {'form' : form })

这是我的 join_team.html

{% extends 'base.html' %}
{%load crispy_forms_tags%}
{% block content %}
    <div class="content-section">
        <form method="POST">
            {% csrf_token %}

   
            <fieldset class="form-group">
                <legend class="border-bottom mb-4">Join our team</legend>
                {{form|crispy}}
            </fieldset>
            <div class="form-group">
                <button class="btn btn-outline-info" type="submit">Join</button>
            </div>
        </form>

    </div>
{% endblock content %}

我想在表单页面上显示错误消息而不是转到主页。

我无法在任何地方找到这个问题,所以请帮助我!

标签: pythondjangodjango-modelsdjango-formsemail-validation

解决方案


推荐阅读