当前位置: 首页 > 知识库问答 >
问题:

Django和服务工作者-在应用程序的根url上提供“sw.js”

羊慈
2023-03-14

因此,我正在使用服务人员构建一个具有离线支持的Django progressive web应用程序。

根据谷歌的文档,软件。js文件应位于应用程序url的根目录下:

您需要这样做,因为服务工作者的作用域(服务工作者将为其加载的URL集)是由其所在的目录html" target="_blank">定义的。

目前,我正在服务文件夹中http://example.com/static/所有静态资产。但是我需要在一个网址上提供这个特定的文件:http://example.com/sw.js.

你知道我怎样才能做到这一点吗?我可以制定一个特定的nginx规则来进行重定向,但我不知道这是否是最干净的方法。也许这个设置应该驻留在URL中。皮耶?

注意:我看到了这个问题,它建议使用django.conf.urls.static中的静态()方法。但是django的文档说静态方法仅供开发使用,所以对我没有好处。

注意(2):我想我可以更改STATIC\uurl设置,但是我很高兴我的文件是从/STATIC目录提供的。我只希望这一个文件位于url的根目录下。

共有3个答案

令狐宏伟
2023-03-14

Django 2.2

项目结构

myproj/
|-app/
| |-templates/
|   |-app/
|     -sw.js
|-myproj/
  -urls.py

网址。py(项目)

from django.views.generic import TemplateView

urlpatterns = [
  ...
  path('sw.js', (TemplateView.as_view(template_name="app/sw.js", 
  content_type='application/javascript', )), name='sw.js'),
]
司马同
2023-03-14

在Django 1.11urls.py应该看:

from django.views.generic import TemplateView

urlpatterns = [
  url(r'^sw.js', (TemplateView.as_view(template_name="sw.js", content_type='application/javascript', )), name='sw.js'),
]
计阳泽
2023-03-14

您可以将javascript用作视图,而不仅仅是html。把这个放到你的项目URL中。派克

url(r'^service-worker.js', cache_control(max_age=2592000)(TemplateView.as_view(
    template_name="service-worker.js",
    content_type='application/javascript',
)), name='service-worker.js'),

然后把你的service-worker.js放在你的模板目录中。

另外,您现在还可以在javascript文件中使用类似static的模板标记。

 类似资料:
  • 简介 服务提供者是所有 Lumen 应用程序启动的中心所在。包括你自己的应用程序,以及所有的 Lumen 核心服务,都是通过服务提供者启动的。 但是,我们所说的「启动」指的是什么?一般而言,我们指的是 注册 事物,包括注册服务容器绑定、事件侦听器、中间件,甚至路由。服务提供者是设置你的应用程序的中心所在。 若你打开 Lumen 的 bootstrap/app.php 文件,你将会看到 $app->

  • 服务提供者是组件和CatLib联系的桥梁。同时也是CatLib启动的中心,所有的服务都是通过服务提供者定义的。 名词定义 组件 组件与CatLib没有任何关系,她们可以独立的运行在不同的框架中。 服务 是由服务提供者将由一个或者多个组件组合而成,并提供一组可以被开发者使用的接口。 容器 CatLib 依赖注入容器。 架构图 创建服务提供者 服务提供者是用来描述一个服务如何为使用者提供服务的,这些关

  • 我创建了一个工作正常的Spring启动应用程序,但我无法获得与该应用程序捆绑在一起的Rest服务。请找到下面的代码。我能够访问urlhttp://localhost:8080/springbootr/但无法访问web服务urlhttp://localhost:8080/springbootr/Hello/,在web服务调用时得到404。 pom。xml: 我是这个应用程序的新手,请帮助我。

  • 我想将数据发送到一个WebService,但它没有返回一个有效的反馈,并且在字符串上显示错误。我正在使用KSOAP2。 null 对象已收集无法计算org.ksoap2.serialization.soapobject.ToString() 如果一切正常,它应该给我一个'OK',但是WebService返回一个XML(responseDump): <?XML Version=“1.0”encodi

  • 问题内容: 什么是之间的差异,并在AngularJS? 问题答案: 从AngularJS邮件列表中,我得到了一个很棒的线程,它解释了服务,工厂,提供者及其注入用法。汇编答案: 语法: 结果:在将serviceName声明为可注入参数时 ,将为您提供函数实例。 换句话说 。 工厂名称 语法: 结果:在将factoryName声明为可注入参数时,将为您提供 通过调用传递给module.factory的

  • 简介 服务提供者是所有 Lumen 应用程序的启动中心。你的应用程序,以及所有 Lumen 的核心服务,都是透过服务提供者启动。 但我们所说的「启动」指的是什么?一般而言,我们指注册事物,包括注册服务容器绑定、事件监听器、过滤器,甚至路由。服务提供者是你的应用程序配置中心所在。 如果你打开包含于 Lumen 中的 bootstrap/app.php 这一文件,你会看到 $app->register