我正在尝试在我的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)。
答案 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
可以正常运作......
希望这会对你有帮助......