gpt4 book ai didi

jquery - 500(内部服务器错误)从 JQuery/ajax 到 heroku 服务器的 GET 和请求 POST

转载 作者:行者123 更新时间:2023-12-01 04:37:54 24 4
gpt4 key购买 nike

我已将 Django 应用程序部署在 Heroku 上的免费 dyno 中目前,我正在从 JQuery-1.12.4 版本发送一些 GET 和 POST 请求

在我的应用程序的本地开发版本中,对 REST 端点服务的请求正常工作下面是获取用户帖子的示例,从 ajax 消费到端点休息服务

enter image description here

这是我的本地 Django 服务器

我在 Heroku 免费 dyno 上部署了相同的用户界面,但行为如下:

enter image description here

服务器抛出错误 500,尽管发生了一些不寻常或奇怪的情况以前,当我在 Heroku 部署中首次创建用户时,创建和获取帖子功能可以正常工作。就像我本地的环境开发一样。

Heroku 仅接受来自 JQuery AJAX 的 GET 和 POST 请求给该用户,如下图所示:

enter image description here

我不知道 Heroku 等生产/测试服务器部署不接受或接受有限的 AJAX 请求的原因。这种行为是否可能是由于我使用免费的 dyno heroku 服务器造成的(我认为是这样,而且太逻辑了)?

为什么只接受一个用户的ajax请求,而其他用户(如上图所示)对ajax请求不起作用?

this question聊聊这个话题,但我还没有弄清楚这个话题

对于我的项目部署,还有什么其他建议可供选择?

AWS EC2?可能是?

Heroku 免费 dyno,不要让我查看日志,因为在这个免费 dyno 中,不保存文件..

我很欣赏有关它的一些指导。

最诚挚的问候

更新

我可以根据to this answer查看我的heroku部署中的日志

目前,GET 和 POST 操作中的日志仅告诉我状态 500

这是我执行 GET 请求时的日志

2017-09-01T12:34:31.053127+00:00 heroku[router]: at=info method=GET path="/api/post/?q=" host=hostayni.herokuapp.com request_id=acd319f7-d47d-4e6c-833f-a0ef34163c51 fwd="190.240.77.93" dyno=web.1 connect=1ms service=615ms status=500 bytes=253 protocol=http

这是我执行 POST 请求时的日志

2017-09-01T12:37:56.512868+00:00 heroku[router]: at=info method=POST path="/api/post/create/" host=hostayni.herokuapp.com request_id=6d51cd89-431e-4b6e-80fe-55a505433fcc fwd="190.240.77.93" dyno=web.1 connect=1ms service=150ms status=500 bytes=253 protocol=http

此时我不知道如何处理 JQuery ajax 请求中的 status=500

这是我继承ListAPIView的 View 的代码。在这里,我创建一个端点 /api/post/ ,在其中发送 ajax GET 请求以检索用户帖子

在此 View 中,我管理两种场景:

a. 我收到用户查看其帖子的请求b. 我请求我关注的用户列表并检索他们的帖子

class PostListAPIView(generics.ListAPIView):
serializer_class = PostModelSerializer
pagination_class = StandardResultsPagination

def get_queryset(self, *args, **kwargs):

# Capturamos el request de un usuario
requested_user = self.kwargs.get("email")
if requested_user:

# Para ver los posts mios y los que reposteo
qs = Post.objects.filter(user__email=requested_user).order_by('-timestamp')
query = self.request.GET.get("q", None)
if query is not None:
# Para buscar por usuario y por su contenido
qs = qs.filter(
Q(content__icontains=query) |
Q(user__email__icontains=query)
)
return qs
else:
im_following = self.request.user.profile.get_following()
# Mostrando los posts de los usuarios que sigo
# Bind querysets
# Para ver los posts de los que sigo y los mios
qs1 = Post.objects.filter(user__in=im_following)
qs2 = Post.objects.filter(user = self.request.user)
qs = (qs1 | qs2).distinct().order_by('-timestamp')
# print(self.request.GET)
query = self.request.GET.get("q", None)
if query is not None:
qs = qs.filter(
Q(content__icontains=query) |
Q(user__email__icontains=query)
)
return qs

从我的 html 模板中,我以这种方式执行 ajax GET 请求:

{% extends "layout.html" %}
{% block script %}
// Codigo basico para traernos datos de REST
<script>
$(document).ready(function(){
console.log("working");
$.ajax({
url: "/api/post/",
method: "GET",
success: function (data) {
console.log("the data are")
console.log(data)

},
error: function(data){
console.log("error")
console.log(data)
}
})
});
</script>
{% endblock script %}

我非常欣赏有关它的一些指导。

最佳答案

您遇到的问题很可能无法通过转移到其他托管提供商来解决。

您应该做的是找到一种方法来查看您在 API url 中遇到的错误的完整回溯。您可以通过以下几种方式之一来执行此操作:

  • 设置 django 日志记录以在发生错误时接收回溯电子邮件
  • 设置第三方日志记录服务,例如 Sentry
  • (最简单)直接在浏览器中访问 API url,而不是通过 AJAX 调用。您还需要在设置中设置 DEBUG=True 才能在浏览器中查看回溯

关于jquery - 500(内部服务器错误)从 JQuery/ajax 到 heroku 服务器的 GET 和请求 POST,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45993721/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com