Django表单无法在页面刷新时重新呈现

时间:2020-09-13 20:36:12

标签: python django

我正在Django中构建一个URL缩短器。我有一个Django表单来提交URL,该表单具有带随机扩展名的默认字段。当我完成提交要缩短的URL时,我将向模板返回一个新表单,以便您可以提交新的URL。

return render(request, 'bitly/index.html', {
       "form": NewBitForm()
})

但是在渲染时,即使刷新页面后,它也会保留旧扩展而不是渲染新扩展。如何做到这一点,以便当我调用NewBitForm()时,它以表格形式返回不同的扩展名?

模板:

<div class="card mb-3">
    <div class="card-body">
        <form action="{% url 'bitly:index' %}" method="post">
            {{ form }}
            <input type="submit" class="btn btn-primary btn-sm form-control">
            {% csrf_token %}
        </form>
    </div>
</div>

表单类:

ALPHA_NUMERIC_CHARS = 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890'
class NewBitForm(forms.Form):
    def get_string(k):
        global ALPHA_NUMERIC_CHARS
        return ''.join(random.choice(ALPHA_NUMERIC_CHARS) for i in range(k))

    url = forms.CharField(label="URL to shorten")
    url.widget.attrs.update({
        'class': 'card mb-3 form-control',
        'spellcheck': 'false'
    })

    extension = forms.CharField(label="Effective Extension")
    extension.widget.attrs.update({
        'id': 'extension-field',
        'class': 'card mb-3 form-control',
        'spellcheck': 'false',
        'value': get_string(5)
    })

0 个答案:

没有答案