【问题标题】:Python Django: How to prevent form field from clearing?Python Django:如何防止表单字段被清除?
【发布时间】:2022-02-09 03:29:33
【问题描述】:

我正在使用 Python Django,我有一个非常简单的表单,由一个按钮和一个输入字段组成。问题是在我提交表单后输入字段由于某种原因被清除。那么如何防止它被清除呢?

这是我的 python 文件:

def index(request):
    # print(f"its me {os.getcwd()}")
    txt = request.GET.get("some_txt")
    if (request.GET.get('mybtn')):
        print(f"THIS IS THE TEXT VALUE: {txt}")
    else:
        print("Has not been clicked")
    return render(request, "main/index.html")

这是 HTML 文件:

<form action="#" method="get">
        {% csrf_token %}
        <input type="text" name="some_txt">
        <button type="submit" class="btn btn-primary" value="mybtn" name="mybtn">Submit</button>

</form>

【问题讨论】:

    标签: python html django web


    【解决方案1】:

    你每次渲染一个新表单,所以如果你想用旧数据填充表单,你可以将它传递给模板:

    def index(request):
        txt = request.GET.get('some_txt', '')
        if (request.GET.get('mybtn')):
            print(f'THIS IS THE TEXT VALUE: {txt}')
        else:
            print('Has not been clicked')
        return render(request, 'main/index.html', {'txt': txt})

    在表单中,您将其用作值:

    <form action="" method="get">
        <input type="text" name="some_txt" value="{{ txt }}">
        <button type="submit" class="btn btn-primary" value="mybtn" name="mybtn">Submit</button>
    </form>

    或者有明确的功能:

    def index(request):
        txt = request.GET.get('some_txt', '')
        if request.GET.get('mybtn') == 'mybtn2':
            txt = ''
        else if request.GET.get('mybtn'):
            print(f'THIS IS THE TEXT VALUE: {txt}')
        else:
            print('Has not been clicked')
        return render(request, 'main/index.html', {'txt': txt})

    因此,在 HTML 端,我们使用第二个按钮:

    <form action="" method="get">
        <input type="text" name="some_txt" value="{{ txt }}">
        <button type="submit" class="btn btn-primary" value="mybtn" name="mybtn">Submit</button>
        <button type="submit" class="btn" value="mybtn2" name="mybtn">Reset</button>
    </form>

    【讨论】:

    • 啊,好吧,我明白了,它似乎可以正常工作。但是现在我怎样才能清除该字段? @WillemVanOnsem
    • @Nick:通过不将值传递给模板/在模板中呈现它。
    • 我不确定我是否理解,这是你指的部分{'txt': txt}
    • @Nick:是的,或者value="{{ txt }"
    • 好吧,我要么将值传递给模板,要么不传递。据我所知,我无法选择何时应用 value="{{ txt }"。如果我传递该值,它将始终适用。所以我想要的是传递该值,并让该字段具有该值,直到我按下某个按钮将其全部重置
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-04-05
    • 1970-01-01
    • 2014-10-17
    • 1970-01-01
    相关资源
    最近更新 更多