onClick()从传递给Django模板的函数中获取一个新值

onClick() get a new value from function passed to Django template

本文关键字:获取 函数 一个 新值 onClick Django      更新时间:2023-09-26

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

您应该使用javascript对页面进行异步更改。你有两种方法。

  1. 如果生成是安全的,请使用AJAX。点击后应发送ajax请求到服务器,这将为您提供一些数据的新随机

  2. 如果它不安全(例如),您可以仅通过javascript生成随机字符串。例如,从这里