Django "TemplateView" 和“/media/”url 冲突

Django "TemplateView" and "/media/" url conflict

我正在使用 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 link 无法访问用户上传的文件,即使它们已保存到文件夹中,我也只是收到 404 错误。当我评论我的 "Template as view" url 时,将其删除或只给它另一个地址,例如 url('main/') - 一切正常又好了

我尝试从其他应用程序提供模板并将其注册到主 urls.py 文件中,但它也不起作用

urlpatterns = [
    url(r'^', views.IndexView),
]

views.py

def IndexView(request):
    return render(request, 'main/index.html', {})
url('', TemplateView.as_view(template_name='index.html'),

您缺少一个结尾)。看来您的 url 模式也不正确。应该是

url(r'^$' , TemplateView.as_view(template_name='index.html')),