Good day to all
At each post request I get an error in the browser console: jquery.js:4 POST http://127.0.0.1:8000/send/ 500 (Internal Server Error) . It occurs in the jQuery library in the send method.
Code:
csrf.js:
function getCookie(name) { var cookieValue = null; if (document.cookie && document.cookie !== '') { var cookies = document.cookie.split(';'); for (var i = 0; i < cookies.length; i++) { var cookie = jQuery.trim(cookies[i]); if (cookie.substring(0, name.length + 1) === (name + '=')) { cookieValue = decodeURIComponent(cookie.substring(name.length + 1)); break; } } } return cookieValue; } var csrftoken = getCookie('csrftoken'); function csrfSafeMethod(method) { return (/^(GET|HEAD|OPTIONS|TRACE)$/.test(method)); } $.ajaxSetup({ beforeSend: function(xhr, settings) { if (!csrfSafeMethod(settings.type) && !this.crossDomain) { xhr.setRequestHeader("X-CSRFToken", csrftoken); } } }); sendMsg.js:
$(document).ready(function () { $('#message-form').submit(function (event) { event.preventDefault(); var message = $('#message').val(); document.getElementById('message').value = ""; if (message !== '') { $.ajax({ method: 'POST', url: '/send/', dataType: 'text', data: { msg: message }, success: function () { alert("Message sent!"); }, error: function () { alert("Error occured!"); } }); } }); }); html form:
<form class="chat-form" name="message-form" id="message-form" action="" method="post"> {% csrf_token %} <textarea title="message" form="message-form" name="message" id="message" placeholder="Type a message..."></textarea> <input type="submit" value="Send" name="send"> </form> views.py:
class MessageManager(APIView): @csrf_protect def post(self, request): msg = request.POST.get('msg', None) if msg != '': time = str(datetime.time.isoformat) author = request.user.username new_message = Message.objects.create(msg=msg, time=time, author=author) return HttpResponse(json.dumps(new_message), content_type="application/json") return HttpResponse(status=400) url:
url(r'^send/$', views.MessageManager.as_view()) Where can there be a mistake?
DEBUG = True, read that the server is responding - andreymal