Я работал над тем, чтобы превратить мое приложение Flask в PWA (Progressive Web App), и теперь, когда у меня возникли проблемы, мне кажется, что у меня есть некоторые проблемы, которые, как мне кажется, мне известны, но не имеют решения. Пожалуйста, исправьте меня, если я ошибаюсь.
Когда запрос попадает на root моего приложения: app.com/, он отображает тот же шаблон, но с другими компонентами в зависимости от того, вошел ли пользователь в систему или нет:
@main.route("/")
def index():
if current_user.is_authenticated:
check_settings = current_user.settings.first()
latest_words = False
if check_settings.show_latest_words:
latest_words = latest_added_words(10)
latest_articles = latest_added_articles(1)
latest_articles_list = latest_added_articles(5)
return render_template("index.html",
title=title,
latest_words=latest_words if check_settings.show_latest_words else None,
show_words_card= check_settings.show_latest_words,
latest_articles=latest_articles,
latest_articles_list=latest_articles_list)
return render_template("index.html", title=title)
Таким образом, один и тот же шаблон возвращается независимо. если пользователь не выполнил вход, когда он / она впервые загрузил приложение, компоненты, которые он будет видеть, - это форма входа в систему и страница доступа, при входе в систему приложение по-прежнему будет отображать форму входа и страницу входа, поскольку это индекс приложение, если они получают доступ к любой другой конечной точке, не полностью кэшируется. Но индекс есть. Поэтому вместо того, чтобы видеть их пост, они просто снова и снова попадают на одну и ту же кэшированную страницу. (если они не удаляют кеш, но затем он начинается снова). Я полагаю, это из-за того, как построены PWA? Это мой манифест. json, который содержит start_url, который указывает на индекс приложения:
{
"name": "Lang&Code",
"short_name": "Lang&Code",
"description": "A progressive webapp for NLP",
"theme_color": "white",
"background_color": "white",
"display": "standalone",
"orientation": "portrait",
"scope": "/",
"start_url": "/",
"icons": [
{
"src": "img/icons/android-icon-72x72.png",
"sizes": "72x72",
"type": "image/png"
},
{
"src": "img/icons/android-icon-96x96.png",
"sizes": "96x96",
"type": "image/png"
},
{
"src": "img/icons/android-icon-128x128.png",
"sizes": "128x128",
"type": "image/png"
},
{
"src": "img/icons/android-icon-144x144.png",
"sizes": "144x144",
"type": "image/png"
},
{
"src": "img/icons/apple-icon-152x152.png",
"sizes": "152x152",
"type": "image/png"
},
{
"src": "img/icons/android-icon-192x192.png",
"sizes": "192x192",
"type": "image/png"
},
{
"src": "img/icons/ms-icon-310x310.png",
"sizes": "310x310",
"type": "image/png"
},
{
"src": "img/icons/ms-icon-512x512.png",
"sizes": "512x512",
"type": "image/png"
}
]
}
Я действительно был разочарован этим и хотел бы иметь некоторые идеи или обходные пути. Спасибо заранее. Чтобы решить проблему, вот ( приложение ).