我将我的Django应用程序部署在Heroku上的免费dyno中 目前,我正在从JQuery-1.12.4版本发送一些GET和POST请求
在我的应用程序的本地开发版本中,对我的REST端点服务的请求是可行的 这是一个获取用户帖子的示例,从ajax到端点休息服务
这是我的localhost Django服务器
我在Heroku free dyno上部署了相同的用户界面,但行为如下:
服务器抛出错误500,虽然发生了一些无聊或奇怪 以前,当我第一次在我的Heroku部署中为这个用户创建一个用户时,创建和获取帖子功能它可以正常工作。就像在我当地的环境发展中一样。
Heroku只接受来自JQuery AJAX的GET和POST请求给这个用户,如下图所示:
我不知道Heroku喜欢生产/测试服务器部署的原因是不接受或接受有限的AJAX请求。有可能(我想是这样,并且会太逻辑)这种行为是由于我使用的是免费的dyno heroku服务器吗?
为什么只接受ajax请求只是一个用户和其他用户,如上面显示的图像,不能用于ajax请求?
在this question谈论这个话题,但我没有明确这个主题
关于部署我的项目,还有哪些其他选项可供我参考?
AWS EC2?可能是?
Heroku免费dyno,不要让我查看由于在这个免费的dyno中的日志,没有保存文件..
我很欣赏它的一些方向。
最好的问候
更新
我可以根据to this answer
查看我的heroku部署中的日志目前,GET和POST操作中的日志只告诉我status 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的视图代码。在这里,我创建了一个端点/api/post/
,其中发送了ajax GET
请求以检索用户帖子
在这个视图中,我管理了两个场景:
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 %}
我非常欣赏它的一些方向。
答案 0 :(得分:1)
通常情况下,迁移到其他托管服务提供商时,您遇到的问题很可能无法解决。
您应该做的是找到一种方法来查看您在API网址上收到的错误的完整回溯。您可以通过以下几种方式之一完成此操作:
DEBUG=True
以在浏览器中查看回溯