【问题标题】:Django form validation no function callDjango表单验证没有函数调用
【发布时间】:2020-10-15 23:01:10
【问题描述】:

我有以下问题。 我有 forms.py 文件:

@parsleyfy
class FilterWebsitesForm(forms.Form):
     domain = forms.RegexField(min_length=3, regex=re.compile("^[a-zA-Z0-9-_., ]+$"), error_messages={'invalid': ("Only these characters are acceptable in a domain name: letters, numbers, hyphens, spaces, commas and dots.")}, required=False, label='', widget=forms.TextInput(attrs={'placeholder': 'domain', 'class': 'text_search padding_both', 'id': 'domain_id'}))

views.py

from myapp.forms import FilterWebsitesForm

def websites_display(request):
    limit = 100
    fwfForm = FilterWebsitesForm()
    start = time.clock()
    if request.method == 'POST':
        fwfForm = FilterWebsitesForm(request.POST or None)
    
        if fwfForm.is_valid():
            queries = {}
        ...

ma​​in_display.html

<title>{{ title }}</title>
<script type="text/javascript">
    $(document).ready(function(){
        $('#button_search').click(function() {
            $('#first').show();
            $('#records_list').block({ message: null });
        });
    });
</script>

在 main_display.html 文件中,加载器会一直显示,直到返回结果。 当用户输入正确的字符时,加载器工作正常。返回结果时消失。

当用户在表单中输入错误的字符时,Regex 字段会显示消息,但也会运行 javascript 函数,这不是我想要的,因为加载器会永远运行。

问题是在显示验证错误消息时,websites_display 函数没有执行(limit = 100 处的断点),这就是为什么我无法检查 {% if form.errors %} 来运行 javascript 函数的原因。

我找不到有关此问题的任何信息。谢谢。

【问题讨论】:

    标签: django forms validation


    【解决方案1】:

    您没有提供完整的 views.py 函数,但根据您报告的内容,我将首先查看何时发生的情况

    if fwfForm.is_valid(): 
    

    是假的。

    你可能需要的东西——同样,你没有提供,但我知道我犯了这个错误——类似于:

    def websites_display(request):
        limit = 100
        fwfForm = FilterWebsitesForm()
        start = time.clock()
        if request.method == 'POST':
            fwfForm = FilterWebsitesForm(request.POST or None)
    
            if fwfForm.is_valid():
               queries = {}
                ... 
            else:
               context = {'form': fwfForm}
               return render(request, 'main_display.html', context)
    

    【讨论】:

    • 您好特里,问题是当用户输入不正确的字符时,会显示来自 regex forms.py 的消息:“域名中只能接受这些字符:字母、数字、连字符、空格、逗号和点。”,但不会执行函数 website_display。我想知道为什么?如果它被执行,我已经有代码来处理这个。当用户输入的字符正确时,执行websites_display函数。
    • 您能否更新问题以包含其余的网站显示功能?您包含的函数部分仅显示 FilterWebsitesForm() 有效时会发生什么,而不会显示无效时会发生什么。如果它正在将错误消息发送到您的视图,那么它正在运行 website_display 函数但没有执行 if fwf.is_valid() 子句,因为表单无效。
    猜你喜欢
    • 2017-08-02
    • 1970-01-01
    • 2011-07-27
    • 2015-07-04
    • 2014-01-28
    • 1970-01-01
    • 2011-01-03
    • 2018-10-08
    • 1970-01-01
    相关资源
    最近更新 更多