我在views.py
中有一个生成随机字符的函数,然后生成的字符将传递到index
视图中的模板。在模板中,我有change
按钮,应该生成一个新的随机字符,但它不会这样做。它会将字段中的任何值更改为已传递给模板的生成字符。
模板中btn1
每次点击时都应将默认{{ random }}
值更改为新值。
的index.html
<form method="POST">
<div class="input-group">
<input type="text" name="name" id="name" class="form-control" value="{{ random }}" onclick="this.select()" readonly="readonly">
<div class="input-group-btn">
<button type="submit" id="btn1" class="btn btn-default" onClick="document.getElementById('name').value='{{ random }}'">Change</button>
<button type="submit" class="btn btn-default">Find</button>
</div>
</div>
</form>
views.py
def generate(size=6, chars=string.ascii_uppercase + string.digits):
return ''.join(random.choice(chars) for _ in range(size))
@csrf_exempt
def index(request):
random = generate()
if request.method == 'POST':
form = NamesForm(request.POST)
if form.is_valid():
name = request.POST.get('name')
return redirect(checkingNames, name=name)
else:
form = NamesForm()
return render(request, 'index.html', {'form': form, 'random': random})
答案 0 :(得分:1)
您应该使用javascript在页面异步上进行更改。 你有两种方式。
如果生成是安全的,请使用AJAX。点击即可发送 ajax-request to server,它会为你提供一些新的随机数据
如果它不安全(如示例中),您可以通过javascript生成随机字符串。例如,来自here