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

时间:2016-03-27 00:23:39

标签: javascript python html django

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

1 个答案:

答案 0 :(得分:1)

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

  1. 如果生成是安全的,请使用AJAX。点击即可发送 ajax-request to server,它会为你提供一些新的随机数据

  2. 如果它不安全(如示例中),您可以通过javascript生成随机字符串。例如,来自here