检查表单输入值到 Django 中的现有值

Posted

技术标签:

【中文标题】检查表单输入值到 Django 中的现有值【英文标题】:Check the form input value to existing value in Django 【发布时间】:2018-05-23 16:53:00 【问题描述】:

在我的数据库中,有一些电子邮件应该使用在电子邮件字段中输入的表单值进行检查

models.py

class Friend(models.Model):
    email = models.EmailField(max_length=100)

forms.py

class FriendForm(forms.ModelForm):

    class Meta:
        model = Friend
        fields = ['email']

views.py

def check(request):
     if request.method == "POST":
        form = FriendForm(request.POST)
        if form.is_valid():
            queryset = Friend.objects.all
            return render(request,"two.html","queryset":queryset)
     else:
        form = FriendForm()
    return render(request, 'emaill.html', 'form': form)

emaill.html

<body>
    <form method="POST">
        % csrf_token %
         form.as_p 
        <input type="submit" name="Submit">
    </form>
 </body>

two.html

<body>
 <h1>found</h1>
 % for obj in queryset %
 obj.email </br>
 % endfor %
</body>

当用户提交任何应该使用模型电子邮件检查的电子邮件时,这意味着如果匹配到的现有电子邮件应该呈现到 two.html,它应该显示连接 如果邮件与数据库中的邮件不匹配,则不应显示此类邮件

【问题讨论】:

Dileep,您的意思是要避免电子邮件注册两次。无论你在做什么,你都做得很差。您为什么对显示存在的电子邮件感兴趣。最好的选择是通过表单验证。你应该多一点耐心请文档docs.djangoproject.com/en/2.0/ref/forms/validation 如果我输入了一些电子邮件,输出应该在电子邮件字段中。如果两者都匹配,则应与数据库检查此电子邮件应呈现为两个,html 并显示已连接 我已经看到了,只是想知道为什么要将电子邮件显示给用户。如果它已经存在。 实际上用户输入了一些随机或任何电子邮件,如果此电子邮件存在于数据库中,则应该显示连接它们的选项 【参考方案1】:

好的,我明白你想要做什么。您正在进行电子邮件搜索。

def check(request):
    if request.method == "POST":
        form = FriendForm(request.POST)
        if form.is_valid():
            email = form.cleaned_data("email")
            try:
                 friend = Friend.objects.get(email=email)
                 return render(request,"email1.html",
                       "friend":friend)
            except Friend.DoesNotExist:
                return render(request, "email1.html", "form":form)

如果您有兴趣连接它们,那么您应该使用 ModelManager(对象)的 get 方法。如果存在,它将返回一个对象。 在您的模板中。如您所见,我通过使用模板中的条件在一个额外的模板上保存了一些输入。

% if form %
  #display your form
% else %
  #display the friend as you want
% endif %

我建议你慢慢来,多阅读文档。我在这里。请注意,我将您的查询集更改为朋友。 queryset 具有误导性,因为它指出您需要多个对象。所以在你的模板中你不能迭代,而是在没有迭代的情况下显示朋友。

 friend 

【讨论】:

以上是关于检查表单输入值到 Django 中的现有值的主要内容,如果未能解决你的问题,请参考以下文章

在重置JSF + PrimeFaces中的表单之前,检查一些必需的输入字段

如何在Django中正确处理获取html输入值到视图和url模式?

在提交之前向 HTML 表单的输入框中的现有值添加附加字符串

检查表单输入是不是存在 [Django]

PHP - 提交日期/时间/从foreach循环中选择输入值到$ _POST不返回任何内容

输入日期值并与现有表进行比较