python - Django "TemplateView" 和 "/media/" url 冲突
问题描述
我正在使用 Django 1.11(不能切换到 2.0)编写一个 SPA,作为后端,从 Django Rest Framework API 获取所有数据,并通过 React 路由路由我的应用程序。
这是我的主要urls.py:
urlpatterns = [
url(r'^api/', include('text_cms.urls')),
url(r'^api/', include('photos_admin.urls')),
url(r'^admin/', admin.site.urls),
url('', TemplateView.as_view(template_name='index.html'),
]
urlpatterns += static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)
这是我的settings.py文件:
MEDIA_ROOT = os.path.join(BASE_DIR, 'media').replace('\\', '/')
MEDIA_URL = '/media-files/'
问题是,特定的 url 设置
url('', TemplateView.as_view(template_name='index.html'),
搞乱了媒体 url,并且用户上传的文件无法通过 url 链接访问,即使它们保存到文件夹,我只是收到 404 错误。当我评论我的“模板作为视图”网址时,将其删除或只是给它另一个地址,例如url('main/') - 一切正常。
我尝试从其他应用程序提供模板并将其注册到主 urls.py 文件中,但它也不起作用
urlpatterns = [
url(r'^', views.IndexView),
]
视图.py
def IndexView(request):
return render(request, 'main/index.html', {})
解决方案
url('', TemplateView.as_view(template_name='index.html'),
你错过了一个结束)。看来您的网址格式也不正确。应该
url(r'^$' , TemplateView.as_view(template_name='index.html')),