我正在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)
})