如何在django中的chatterbot视图中向终点发出POST请求?

时间:2019-06-17 05:43:13

标签: django django-rest-framework django-views

我是django的新手!

我想在我的网站中创建一个chatterbot chatbot,为此我需要在视图中发出POST请求。我创建了一个模型。我为此使用mysql数据库。

我已经访问了github和其他网站,最后得到了一个代码,但是没有POST请求

这是我的模型。py:

class Response(models.Model):
statement = models.ForeignKey(
    'Statement',
    related_name='in_response_to',
    on_delete=False
)

response = models.ForeignKey(
    'Statement',
    related_name='+',
    on_delete=False
)

unique_together = (('statement', 'response'),)

occurrence = models.PositiveIntegerField(default=0)

def __str__(self):
    s = self.statement.text if len(self.statement.text) <= 20 else self.statement.text[:17] + '...'
    s += ' => '
    s += self.response.text if len(self.response.text) <= 40 else self.response.text[:37] + '...'
    return s

这是我需要在views.py中发出POST请求的地方

def post(self, request, *args, **kwargs):

    response = Response.objects.all()

    if request.is_ajax():
        input_data = json.loads(request.read().decode('utf-8'))
    else:
        input_data = json.loads(request.body.decode('utf-8'))

    self.validate(input_data)

    response_data = self.chatterbot.get_response(input_data)

    return JsonResponse(response, response_data, status=200)

def get(self, request, *args, **kwargs):
    data = {
        'detail': 'You should make a POST request to this endpoint.',
        'name': self.chatterbot.name,
        'recent_statements': self._serialize_recent_statements()
    }

    # Return a method not allowed response
    return JsonResponse(data, status=405)

1 个答案:

答案 0 :(得分:0)

如果您使用的是django rest框架(DRF),建议您先执行QuickStart,然后再执行Serialization步骤。 DRF有一个非常好的文档,在序列化中,您可以通过定义以下内容找到如何发出POST请求:

  • 模型
  • 序列化器
  • Api
  • 路由器