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

时间:2018-06-08 21:50:11

标签: python django django-urls

我正在用Django 1.11编写一个SPA(切换到2.0不是一个选项),作为后端,从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('', TemplateView.as_view(template_name='index.html'),

正在弄乱媒体网址,用户上传的文件无法通过网址链接到达,即使它们已保存到文件夹,我只是收到404错误。当我评论我的“模板作为视图”网址时,删除它或只是给它另一个地址,如 url('main /') - 一切正常。

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

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

views.py

def IndexView(request):
    return render(request, 'main/index.html', {})

1 个答案:

答案 0 :(得分:1)

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

你错过了结束)。看来你的url模式也是不正确的。应该是

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