Mon*_*nja 9 django django-urls django-staticfiles service-worker
所以我正在构建一个Django渐进式Web应用程序,使用服务工作者提供离线支持.
根据谷歌的文档,sw.js文件应该是应用程序URL的根目录:
您需要执行此操作,因为服务工作者的范围(ServiceWorker将加载的URL集)由其所在的目录定义.
目前,我正在从http://example.com/static/文件夹中提供所有静态资源.但我需要在以下网址上提供此特定文件:http://example.com/sw.js.
知道我怎么能做到这一点?我可以制定一个特定的nginx规则来执行此重定向,但我不知道这是否是最干净的方法.也许这个设置应该存在于urls.py中?
注意:我已经看到这个问题建议使用static()方法django.conf.urls.static.但是django的文档说静态方法仅供开发使用,对我不利.
注意(2):我想我可以更改STATIC_URL设置,但我对从/ static目录提供的文件感到满意.我只希望这个文件位于url的根目录下.
dal*_*ore 15
您可以将javascript作为视图提供,而不仅仅是html.把它放在你的项目urls.py中
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'),
Run Code Online (Sandbox Code Playgroud)
然后将您service-worker.js放入模板目录中.
现在,您可以在javascript文件中使用静态模板标签.
姜戈2.2
项目结构
myproj/
|-app/
| |-templates/
| |-app/
| -sw.js
|-myproj/
-urls.py
Run Code Online (Sandbox Code Playgroud)
urls.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'),
]
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3739 次 |
| 最近记录: |