Estoy haciendo un proyecto en Django. En mis vistas, envío datos a las páginas HTML con diccionarios. Puedo acceder fácilmente a esos datos en HTML, pero cuando trato de acceder a ellos en Javascript no puedo porque Javascripts piensa que es un nombre de variable.
Por ejemplo, tengo una página de inicio de sesión. Si las credenciales están mal, las envío a la misma página y les digo que el usuario o la contraseña están mal. Quiero mantener el nombre de usuario escrito anteriormente en el formulario, para que la persona solo tenga que volver a escribir la contraseña. Envío el nombre de usuario desde la vista al Javascript, pero no puedo acceder a él.
Mi código de vista:
def login_form(request): assert isinstance(request, HttpRequest) if 'username' and 'password' in request.POST: user = request.POST['username'] passw = request.POST['password'] if rightcredentials(user,passw): tparams = { 'message': 'login successful', } return render(request, 'about.html', tparams) else: tparams = { 'login' : 'failure1', 'username_info' : user } return render(request, 'login_form.html', tparams)Código JavaScript:
{% if login == 'failure1' %} <form action="." method="post"> {% csrf_token %} <div class="program-info"> <h3 class="program-title">Sign Into Your Account</h3> <p>Wrong Username or password</p> <div class="form-group"> <input type="text" value="" class="form-control" name="username" id="username" placeholder="Username"> </div> <div class="form-group"> <input type="password" class="form-control" name="password" placeholder="Password"> </div> <button type="submit" class="btn btn-primary">Log In</button> </div> </form> <script type="text/javascript"> {% autoescape off %} var paramvalue = {{ username_info }} {% endautoescape %} document.getElementById("username").value = paramvalue; </script> {%endif%}Después de insertar el nombre de usuario: 'pedro' y la contraseña incorrecta en el formulario, aparece el siguiente error:
Uncaught ReferenceError: pedro is not defined ¿Hay alguna forma de acceder a la cadena username_info o de convertir el nombre de la variable en una cadena?
Envolver {{ }} entre comillas debería funcionar
{% autoescape off %} var paramvalue = "{{ username_info }}" {% endautoescape %}