检查表单输入是不是存在 [Django]
Posted
技术标签:
【中文标题】检查表单输入是不是存在 [Django]【英文标题】:Checking if form input exists [Django]检查表单输入是否存在 [Django] 【发布时间】:2017-09-25 08:27:11 【问题描述】:我有一个用户输入一个输入的 Django 表单。提交后,他们将被带到与其输入相关联的 URL。
数据库包含user_input
和associated_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]的主要内容,如果未能解决你的问题,请参考以下文章