0

Так что это простой взгляд, который я написал.403 с классом класса django

class PostTestView(View): 
    def post(self, request, *args, **kwargs): 
     print request.POST 
     return HttpResponse("Hello there") 

моего urls.py имеет эту линию для выше точек зрения:

url(r'^test/create$',PostTestView.as_view(), name='app.views.create_test') 

Но я получаю 405 Http error когда я пытаюсь ударить http://127.0.0.1:8000/app/test/create

Это, видимо, означает, что мой метод post не в список определенных методов. Но я определил его, как указано выше, на мой взгляд. Что здесь может быть неправильно? Я не знаю

ответ

5

Попробуйте определить метод get.

Метод «пост» обычно используется в формах, но, когда вы просто указываете ваш браузер на URL используемый метод является «получить»

+0

На самом деле, попытаться избежать переопределения '' Post' и get' не напрямую, если вы точно знаете, что делаете. Вместо этого используйте общие CBV в качестве отправной точки, выбирая ее на основе того, что вы пытаетесь сделать с вашим представлением. –

+1

Это классический вид (CBV). Если вы посмотрите на документацию django, https://docs.djangoproject.com/en/dev/topics/class-based-views/intro/ override метод get и post - это документированный способ сделать что-то. Я предполагаю, что вы ссылаетесь на общие представления на основе классов, и это хороший момент, если вы можете использовать общие представления на основе классов. – esauro

+0

Вы правы, я говорил об общих CBV. Однако, в отличие от функциональных представлений, настоятельно рекомендуется найти подходящий общий CBV, прежде чем копать глубже, так как вы почти наверняка найдете его. Вот почему я сделал комментарий к вашему ответу (который не является неправильным) вместо того, чтобы писать другой ответ. –

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