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

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

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它应该显示连接如果邮件与数据库中的邮件不匹配它应该显示没有这样的邮件

回答(1)

2 years ago

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

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 }}