Django - 在根目录

时间:2017-06-27 13:50:29

标签: django

我正在尝试在我的Django项目中实施Firebase云消息传递通知。 Firebase会在项目中查找名为firebase-messaging-sw.js的js文件。根目录(无论是什么类型的项目)。

所以,问题是我无法弄清楚我的项目的根目录是什么(抱歉,这是愚蠢的),以及如何让Firebase看到这个文件。就像一个实验一样,我将js文件复制粘贴到我项目的每个文件夹中,但仍然没有成功(Firebase服务无法查看该文件)。

这是我的settings.py文件(包含相关内容):

BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))

ROOT_URLCONF = 'android_blend.urls'

WSGI_APPLICATION = 'android_blend.wsgi.application'
PROJECT_ROOT = os.path.abspath(os.path.dirname(__file__))

STATIC_URL = '/static/'

if DEBUG:
    MEDIA_URL = '/media/'
    STATIC_ROOT = os.path.join(os.path.dirname(BASE_DIR),"static","static-only")
#STATIC_ROOT = [os.path.join(BASE_DIR,"static-only")]
    MEDIA_ROOT = os.path.join(os.path.dirname(BASE_DIR),"static","media")
#MEDIA_ROOT = [os.path.join(BASE_DIR,"media")]
    STATICFILES_DIRS = (
        #os.path.join(os.path.dirname(BASE_DIR),"static","static"),
        os.path.join(BASE_DIR,"static"),
    )

我的Django项目布局是这样的:

android_blend
   android_blend
      settings.py
      url.py
      wsgi.py
   app1
   app2
   ...
   appN
   manage.py

所以问题是,为了让外部服务应用程序(Google Firebase)能够看到javascript文件,我应该怎么做?

在我的浏览器中,我收到以下错误:

  

获取脚本时收到错误的HTTP响应代码(404)。

1 个答案:

答案 0 :(得分:5)

我也遇到了同样的问题。

我通过以下方式尝试了它:

Public Class MyClass Public Property AString() As String Public Property ADateTime() As DateTime End Class Dim test As New List(Of MyClass) test.Add(New MyClass() With { .AString = "Popescu bogdan", .ADateTime = #21/02/2017# })

中添加以下行
urls.py

现在在url(r'^firebase-messaging-sw.js', views.firebase_messaging_sw_js), 文件

中添加该功能
view.py

所以@csrf_exempt def firebase_messaging_sw_js(request): filename = '/static/firebase-messaging-sw.js' jsfile = open(absAppPath+filename, 'rb') response = HttpResponse(content=jsfile) response['Content-Type'] = 'text/javascript' response['Content-Disposition'] = 'attachment; filename="%s"'%(absAppPath+filename) return response 可以正常运作......

希望这会对你有帮助......