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

Posted

技术标签:

【中文标题】检查表单输入是不是存在 [Django]【英文标题】:Checking if form input exists [Django]检查表单输入是否存在 [Django] 【发布时间】:2017-09-25 08:27:11 【问题描述】:

我有一个用户输入一个输入的 Django 表单。提交后,他们将被带到与其输入相关联的 URL。

数据库包含user_inputassociated_url 字段。

user_input 设置了值unique=True。当输入重复输入时,网站This value user_input already exists in the database 上会显示以下内容,即使我没有这样设置。这可能是form.is_valid()的功能?

所以它会立即识别重复值,但我正在尝试设置它,以便如果输入重复值,那么它只会将用户带到 associated_url 以获取该值。

现有数据库表:

user_input    associated_url

hello     https://***.com

如果用户再次在表单中输入hello,它会立即将他们带到https://***.com,而不是显示This value user_input already exists in the database

代码:

def Primary(request):

    form = Form()

    if request.method == 'POST':

        form = Form(request.POST)

        if form.is_valid():

                ... saving to database, redirect etc.

我需要能够检查输入值是否重复。如果是,则从与重复的 user_input 条目相同的行中获取 associated_url 并将用户重定向到那里。

为此,我自己尝试将else 语句添加到form.is_valid 条件,但这似乎是不好的做法,因为它会尝试重定向而不管错误(?),而且因为我不知道如何获取与输入值关联的associated_url

【问题讨论】:

【参考方案1】:

您有多种选择,但其中一些是。

param = request.POST["param"]

if YourModel.objects.get(param=param):
    redirect('/myurl/'.format(param))
else:
    if form.is_valid():
        # other code

或者为您正在使用的表单编写您自己的自定义clean() 方法。

【讨论】:

以上是关于检查表单输入是不是存在 [Django]的主要内容,如果未能解决你的问题,请参考以下文章

检查日期是不是对选定的月份有效 Django 表单

单击时检查表单中是不是存在不显示的元素

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

检查以检查 Django 中是不是存在数据库表?

在使用 Laravel 进行验证期间检查输入中是不是存在字段

VBA访问检查父表单是不是存在