-
Notifications
You must be signed in to change notification settings - Fork 0
8. Ajax
Dmitry edited this page Dec 14, 2018
·
1 revision
ln -s node_modules/jquery/dist jquery
Library
<script src="/static/jquery/jquery.min.js"></script>
<script src="{% static 'prj.js' %}"></script>
Form
<ul class="navbar-nav " id="logout_link" style="display: none">
<li class="nav-item active">
<a class="nav-link" href="{% url 'logout' %}">Logout</a>
</li>
</ul>
<form action="{% url 'login' %}" method="POST" id="login_form" class="form-inline mt-2 mt-md-0">
{% csrf_token %}
<input class="form-control mr-sm-2" type="text" id="login" name="login" placeholder="Login" >
<input class="form-control mr-sm-2" type="text" id="password" name="password" placeholder="Password" >
<button class="btn btn-outline-success my-2 my-sm-0" type="submit">SignIn</button>
<button id="login_link" class="btn btn-outline-success my-2 my-sm-0"> Login AJAX </button>
</form>
JS
function success(data){
if(data.status==0){
$('#login_form').hide();
$('#logout_link').show();
}
alert(data.message);
}
function ajax_login(){
data = {
'login': $('#login').val(),
'password': $('#password').val(),
'csrfmiddlewaretoken': $( "[name='csrfmiddlewaretoken']" ).val()
}
$.ajax({
type: "POST",
url: "/account/alogin",
data: data,
success: success
});
}
$('#login_link').on('click',ajax_login);
Plugin
pip install django-jsonview
URL
path('alogin', alogin, name='alogin'),
View
from jsonview.decorators import json_view
@json_view
def alogin(request):
username = request.POST['login']
password = request.POST['password']
user = authenticate(request, username=username, password=password)
if user is not None:
l(request, user)
return { 'status': 0, 'message': 'Welcome!!!!' }
else:
return { 'status': 1, 'message': 'Login or password incorrect!!!' }