我有我的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