我有我的Django应用程序部署在Heroku免费dyno 目前,我从JQuery-1.12.4版本发送一些GET和POST请求500(内部服务器错误)GET和请求POST从JQuery/ajax到heroku服务器
在我的申请,我的本地开发版本,请求我的REST端点服务它的作品 这里的获取一个用户的帖子的例子,从阿贾克斯消耗到终点休息服务
这是我的本地主机Django服务器
我部署在Heroku免费测功机这个相同的用户界面,但行为如下:
服务器抛出一个错误500,虽然是发生了一些inusual或奇怪 以前,当我首次在我的Heroku部署中为该用户创建一个用户,创建和获取发布功能它的工作正常就像我在当地的环境发展一样。
的Heroku接受JQuery的AJAX GET和POST请求,只对这个用户,如按照这样的画面:
我不明其Heroku的来样生产/测试服务器部署不接受的原因或接受有限的AJAX请求。是可能的(我认为是这样,并会太逻辑),这种行为是由于我使用免费的dyno heroku服务器?
为什么只接受只有用户和其他用户喜欢的图像显示在上面的ajax请求,不起作用的Ajax请求?
在this question谈论的话题,但我并没有明确这个问题
其他选项建议我关于我的项目的部署是什么?
AWS EC2?也许?
Heroku的免费测功机,不要让我的日志看,由于在这个免费的测功机,不保存文件..
我很欣赏一些关于它的方向。
问候
UPDATE
我可以看看我的Heroku的部署日志,根据to this answer
通过的那一刻,在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的我的视图的代码。在这里,我创造了AJAX GET
请求被发送到检索用户帖子
在这个视图端点/api/post/
我管理两个scenaries:
一个。我收到用户查看帖子的请求 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 %}
我很欣赏高一些关于取向它。
我建议在您的应用程序中设置更好的日志记录,以便您可以看到500错误的完整回溯。您可以设置电子邮件日志记录以通过电子邮件将任何错[见本页](https://docs.djangoproject.com/en/1.11/topics/logging/#configuring-logging) – rawbeans
相反,您可以使用[Sentry](https://sentry.io/) 。它对于单个用户是免费的,并且非常容易设置。它会向你发送错误邮件,并有一个非常漂亮的界面用于导航回溯。 – rawbeans
但是对于这个问题,你可以做的最简单和最快的事情是在你的设置中为heroku django服务器设置DEBUG = True,这样你就可以在你的浏览器窗口中获得回溯。现在通过浏览器而不是AJAX发出请求,并且你应该得到500错误的回溯。完成此操作后更新您的问题。 – rawbeans