Django-在根目录中放置和访问js文件

Edg*_*yan 3 django

我正在尝试在Django项目中实现Firebase云消息传递推送通知。Firebase会firebase-messaging-sw.js在项目的根目录中查找命名为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"),
    )
Run Code Online (Sandbox Code Playgroud)

我的Django项目布局如下:

android_blend
   android_blend
      settings.py
      url.py
      wsgi.py
   app1
   app2
   ...
   appN
   manage.py
Run Code Online (Sandbox Code Playgroud)

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

在我的浏览器中,出现以下错误:

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

小智 5

我也面临着同样的问题。

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

在下面添加以下行 urls.py

url(r'^firebase-messaging-sw.js', views.firebase_messaging_sw_js),
Run Code Online (Sandbox Code Playgroud)

现在在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
Run Code Online (Sandbox Code Playgroud)

这样localhost:8000/firebase-messaging-sw.js就可以正常工作了...

希望能帮到你...