Кнопка события jquery показывает правильный ответ, но представление не отображает его правильно в django
Я хочу показать неправильные ошибки входа в систему на jquery click.Мой код работает нормально, кнопка jquery event(click) тоже показывает ответ правильно, но django views не отображает ответ правильно.В ответе в элементе inspect они показывают ошибку, как я отправляю контекст, но изменения не отображаются на экране.
просмотр входа
def logn(req):
if req.user.is_authenticated:
return redirect('home')
else:
context={
'error_msg':'blah'
}
if req.method == 'POST':
usrname = req.POST['lusername']
psswd = req.POST['lpass']
if len(usrname) == 0 and len(psswd) == 0:
print('error')
context={
'error_msg':'password?'
}
return render(req,'base.html',context)
usr = authenticate(req,username=usrname,password=psswd)
if usr is not None:
login(req,usr)
redirect('home')
Jquery
$('#lbtn').click(function(){
let lusername = $('input[name=lusername]').val();
let lpass = $('input[name=lpassword]').val();
$.ajax({
type: 'POST',
url: '/login/',
headers :{
'X-CSRFToken': getcsrfToken(),
},
data: {
lusername : lusername,
lpass : lpass,
},
success: (data) => {
if(data){
$('input[name=lusername]').val('');
$('input[name=lpassword]').val('');
}
},
})
})
HTML
<div class='bg'>
<span><i class='material-icons tiny left cross'>clear</i></span>
<i class='material-icons tiny right spin'>cached</i>
{% if error_msg %}<p class='red-text'>{{error_msg}}</p>{%endif%}
</div>
<div class='white-text log_title'>
LOGIN
</div>
<div class='white-text log_title1'>
Please enter your username and password
</div>
{% if error_msg %} <p class='red-text'>{{ error_msg }}</p>{% endif %}
{% csrf_token%}
<div class="row">
<div class="input-field col s9">
<p for="lusername" class='white-text log_user'>Username</p>
<input name='lusername' type="text" class="validate white-text" id='in1'>
</div>
</div>
<div class="row">
<div class="input-field col s9">
<p for="lpassword" class='white-text log_user'>Password</p>
<input name='lpassword' type="text" class="validate white-text" id='in1'>
</div>
</div>
<div class='center'>
<button class="btn waves-effect waves-light blue black-text" type="submit" name="action" id='lbtn'>
Login
</button>
</div>
<div class='topper'>
<a href='/'>
Forgot Password ?
</a>
</div>
</div>
login modal находится в 'base.html'. Таким образом, я должен отобразить 'base.html' в различных представлениях с различным контекстом.
Во-первых, в третьей строке вашего HTML {%endif%}
должно быть {% endif %}
Более того, мне кажется, что это условие не выполняется: if len(usrname) == 0 and len(psswd) == 0:
Проверить длину usrname
и psswd
в python...