我有一个使用Vue.js创建的单页面应用程序,它利用HTML5 History模式进行路由,并且html文件是由Django提供的。
Django的urls.py如下:
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')
考虑以下情况:
- 用户访问主页(即
/
)。
由于主页返回了单页Vuejs应用程序所需的index.html文件,因此它运行得像应该的那样。
- 从那里,用户导航到about页面(即
/username/12
)。
它仍然可以正常工作,因为它使用Vue路由进行导航。
- 现在,用户刷新页面。
由于在urls.py模式中没有/username/12
,因此它将显示页面未找到(404)。
现在,我可以在urls.py中提供另一个模式来捕获最后一项的所有模式,如下所示:
urlpatterns = [
url(r'^admin/', admin.site.urls),
url(r'^api-token-auth/', obtain_jwt_token),
url(r'^.*$', views.home),
]
但是其他像媒体或静态文件的url也会指向相同的捕获所有模式的正则表达式。我该如何解决这个问题?