У меня есть одностраничное приложение, созданное в Vue.js, которое использует режим истории HTML5 для маршрутизации, а файл html - с Django.
urls.py django выглядит так:
urlpatterns = [
url(r'^$', views.home),
url(r'^admin/', admin.site.urls),
url(r'^api-token-auth/', obtain_jwt_token),
]
И views.home:
def home(request):
return render(request, 'index.html')
Рассмотрим следующий сценарий:
- Пользователь посещает домашнюю страницу (т.е.
/
)
Так как на домашней странице отвечает требуемый index.html для приложения Vuejs с одной страницей, он работает так, как предполагалось.
- Оттуда пользователь переходит к странице about (т.е.
/username/12
).
Он все еще работает нормально, поскольку он перемещается с маршрутизатором Vue.
- Теперь пользователь обновляет страницу.
Так как там нет /username/12
в шаблонах urls.py, он покажет Страница не найдена (404).
Теперь я мог бы предоставить еще один шаблон в urls.py, чтобы поймать весь шаблон в последнем порядке, как это:
urlpatterns = [
url(r'^admin/', admin.site.urls),
url(r'^api-token-auth/', obtain_jwt_token),
url(r'^.*$', views.home),
]
Но другие URL-адреса, такие как медиа или статические URL-адреса, будут также указывать на одно и то же правило репликации всех шаблонов catch. Как я могу решить эту проблему?