Django "TemplateView" и "/ media /" конфликт URL - PullRequest
0 голосов
/ 09 июня 2018

Я пишу SPA с Django 1.11 (переключение на 2.0 не вариант) в качестве бэкэнда, получая все данные из API Django Rest Framework, и я маршрутизирую свое приложение через маршрутизацию 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-адрес «Шаблон как вид», удаляю его или просто присваиваю ему другой адрес, например url ('main /') - все снова работает нормально.

Я пробовалобслуживать шаблон из другого приложения и регистрировать его в главном файле urls.py, но он тоже не работает

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

views.py

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

1 Ответ

0 голосов
/ 09 июня 2018
url('', TemplateView.as_view(template_name='index.html'),

Вам не хватает закрытия).Также кажется, что ваш шаблон URL неверен.Должно быть

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