2016-01-12 3 views
0

Я пытаюсь выполнить запрос AJAX POST в Django, но это дает мне ошибку. У меня также есть аналогичный взгляд на запрос Ajax GET, и он работает хорошо. Это мое мнение:Django: объект не имеет атрибута 'post'

class ChangeWordStatus(JSONResponseMixin, AjaxResponseMixin, View): 

def get_ajax(self, request, *args, **kwargs): 
    user_profile = get_object_or_404(UserProfile, user=request.user) 
    lemma = request.POST['lemma'] 
    new_status_code = int(request.POST['new_status_code']) 

    word = Word.objects.get(lemma=lemma) 
    old_status_code = user_profile.get_word_status_code(word) 

    json_dict = {} 
    json_dict["message"] = "Done" 

    return self.render_json_response(json_dict) 

я получаю это:

Traceback: 
File "C:\Python34\lib\site-packages\django\core\handlers\base.py" in get_response 
    132.      response = wrapped_callback(request, *callback_args, **callback_kwargs) 
File "C:\Python34\lib\site-packages\django\views\generic\base.py" in view 
    71.    return self.dispatch(request, *args, **kwargs) 
File "C:\Python34\lib\site-packages\braces\views\_ajax.py" in dispatch 
    78.    return handler(request, *args, **kwargs) 
File "C:\Python34\lib\site-packages\braces\views\_ajax.py" in post_ajax 
    87.   return self.post(request, *args, **kwargs) 

Exception Type: AttributeError at /slv/change_word_status/ 
Exception Value: 'ChangeWordStatus' object has no attribute 'post' 
Request information: 
GET: No GET data 

POST: 
csrfmiddlewaretoken = 'eapny7IKVzwWfXtZlmo4ah657y6MoBms' 
lemma = 'money' 
new_status_code = '1' 

Что здесь не так?

+0

Вам нужен '.POST)' метод (поймать запрос 'Post'. – Gocht

ответ

2

Из вашей трассировки стека, я считаю, вы используете django-braces.

Вы отправляете запрос POST, но у вас нет метода post_ajax. Я предполагаю, что ваша функция get_ajax действительно должна быть post_ajax.

class ChangeWordStatus(JSONResponseMixin, AjaxResponseMixin, View): 

    def post_ajax(self, request, *args, **kwargs): 
     user_profile = get_object_or_404(UserProfile, user=request.user) 
     lemma = request.POST['lemma'] 
     new_status_code = int(request.POST['new_status_code']) 

     word = Word.objects.get(lemma=lemma) 
     old_status_code = user_profile.get_word_status_code(word) 

     json_dict = {} 
     json_dict["message"] = "Done" 

     return self.render_json_response(json_dict) 

Ссылка: https://django-braces.readthedocs.org/en/latest/other.html#ajaxresponsemixin

+0

Спасибо, это так очевидно, но я не заметил его в течение длительного времени. – hopheylalaley

Смежные вопросы