在编辑收发私信功能,前端无论使用ajax还是form表单提交都显示405错误,此处是form表单提交产生的错误:
Method Not Allowed (POST): /messages/send-message/
[17/Feb/2020 05:20:15] "POST /messages/send-message/ HTTP/1.1" 405 0
form表单:
<form role="form" method="post" action="{% url 'messager:send_message' %}">
{% csrf_token %}
<div class="form-group">
<input type="hidden" name="to" value="{{ active }}">
<input class="form-control" type="text" name="message" placeholder="发送消息" autocomplete="off">
</div>
<input id="" type="submit" class="btn btn-success pull-right" value="提交">
</form>
后端代码 views.py:
@login_required
@require_http_methods(['POST'])
def send_message(request):
"""发送消息POST请求"""
# 发送者
sender = request.user
# 获取前端传递的用户名
recipient_username = request.POST.get('to')
# 接收者
recipient = User.objects.get(username=recipient_username)
# 获取消息内容
message = request.POST.get('message')
# 创建消息
if len(message.strip()) != 0 and sender != recipient:
msg = Message.objects.create(
sender=sender,
recipient=recipient,
message=message
)
return render(request, 'messager/single_message.html', {"message": msg})
return HttpResponse()
反复检查了好几遍,路由没有错,请求方法也没有错,也没有出现跨域,但就是一直出现405错误,怎么也不清楚是哪里的问题,求解决,谢谢!
虽然不是做py的。但是原理是一样的吧。
一定是没有访问到方法。
如果是我排查,先前端console一下,确认访问地址有没有问题。
然后看看get请求能不能访问到,后端随便print一下。
如果get请求能访问到,post不能访问,应该就是django有什么设置吧。