Django 웹사이트를 PWA로 변환
PWA는 휴대폰이나 PC에서 일반 기본 앱처럼 보이는 웹 앱입니다. 크로스플랫폼 어플리케이션을 만들기 위한 지름길이라고 생각합니다
우리는
django-pwa
패키지를 동일하게 사용할 것입니다.설치
django-pwa
패키지 설치pip install django-pwa
pwa
를 추가합니다.# project/settings.py
INSTALLED_APPS = [
...
'pwa',
...
]
구성
# project/settings.py
PWA_APP_NAME = 'My App'
PWA_APP_DESCRIPTION = "My app description"
PWA_APP_THEME_COLOR = '#0A0302'
PWA_APP_BACKGROUND_COLOR = '#ffffff'
PWA_APP_DISPLAY = 'standalone'
PWA_APP_SCOPE = '/'
PWA_APP_ORIENTATION = 'any'
PWA_APP_START_URL = '/'
PWA_APP_STATUS_BAR_COLOR = 'default'
PWA_APP_ICONS = [
{
'src': '/static/images/my_app_icon.png',
'sizes': '160x160'
}
]
PWA_APP_ICONS_APPLE = [
{
'src': '/static/images/my_apple_icon.png',
'sizes': '160x160'
}
]
PWA_APP_SPLASH_SCREEN = [
{
'src': '/static/images/icons/splash-640x1136.png',
'media': '(device-width: 320px) and (device-height: 568px) and (-webkit-device-pixel-ratio: 2)'
}
]
PWA_APP_DIR = 'ltr'
PWA_APP_LANG = 'en-US'
Django 4와 호환되도록 만들기
현재
django-pwa
버전 1.0.10은 Django 4와 호환되지 않습니다. 따라서 이전 버전의 Django를 사용 중이거나 이 패키지가 업데이트된 경우 이 단계를 건너뛸 수 있습니다( *
로 표시됨).이름을 pwa1로 지정했습니다.
from django.urls import re_path as url
from .views import manifest, service_worker, offline
# Serve up serviceworker.js and manifest.json at the root
urlpatterns = [
url(r'^serviceworker\.js$', service_worker, name='serviceworker'),
url(r'^manifest\.json$', manifest, name='manifest'),
url('^offline/$', offline, name='offline')
]
urls.py
파일에 다음을 추가합니다....
urlpatterns=[
...
path('', include('pwa.urls')),
# if you used the above method for compatibility then use the following code instead
#path('', include('pwa1.urls')),
...
]
serviceworker.js
파일을 만듭니다.// Base Service Worker implementation. To use your own Service Worker, set the PWA_SERVICE_WORKER_PATH variable in settings.py
var staticCacheName = "django-pwa-v" + new Date().getTime();
var filesToCache = [
'/offline',
'/css/django-pwa-app.css',
'/images/icons/icon-72x72.png',
'/images/icons/icon-96x96.png',
'/images/icons/icon-128x128.png',
'/images/icons/icon-144x144.png',
'/images/icons/icon-152x152.png',
'/images/icons/icon-192x192.png',
'/images/icons/icon-384x384.png',
'/images/icons/icon-512x512.png',
'/static/images/icons/splash-640x1136.png',
'/static/images/icons/splash-750x1334.png',
'/static/images/icons/splash-1242x2208.png',
'/static/images/icons/splash-1125x2436.png',
'/static/images/icons/splash-828x1792.png',
'/static/images/icons/splash-1242x2688.png',
'/static/images/icons/splash-1536x2048.png',
'/static/images/icons/splash-1668x2224.png',
'/static/images/icons/splash-1668x2388.png',
'/static/images/icons/splash-2048x2732.png'
];
// Cache on install
self.addEventListener("install", event => {
this.skipWaiting();
event.waitUntil(
caches.open(staticCacheName)
.then(cache => {
return cache.addAll(filesToCache);
})
)
});
// Clear cache on activate
self.addEventListener('activate', event => {
event.waitUntil(
caches.keys().then(cacheNames => {
return Promise.all(
cacheNames
.filter(cacheName => (cacheName.startsWith("django-pwa-")))
.filter(cacheName => (cacheName !== staticCacheName))
.map(cacheName => caches.delete(cacheName))
);
})
);
});
// Serve from Cache
self.addEventListener("fetch", event => {
event.respondWith(
caches.match(event.request)
.then(response => {
return response || fetch(event.request);
})
.catch(() => {
return caches.match('offline');
})
)
});
base.html
파일에 다음 태그를 추가합니다.{% load pwa %}
<head>
...
{% progressive_web_app_meta %}
...
</head>
그게 다야 🎉
이제 모바일과 PC에서 지원되는 브라우저에서 사이트를 앱으로 설치하는 옵션을 볼 수 있습니다.
Reference
이 문제에 관하여(Django 웹사이트를 PWA로 변환), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/dilutewater/convert-django-website-to-pwa-59em텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)