Django находит шаблон, но не отображает его и выбрасывает пустую HTML-страницу
У меня есть представление в views.py
:
def simple_upload(request):
if request.method == 'POST' and request.FILES['myfile']:
myfile = request.FILES['myfile']
fs = FileSystemStorage()
filename = fs.save(myfile.name, myfile)
uploaded_file_url = fs.url(filename)
print(uploaded_file_url)
context = {
'uploaded_file_url': uploaded_file_url
}
return render(request, 'simple_upload.html', context)
return render(request, 'simple_upload.html')
Затем, url в urls.py
:
urlpatterns = [
path('', views.project_index, name='project_index'),
path('<int:pk>/', views.project_detail, name='project_detail'),
path('upload/', views.simple_upload, name='upload')
]
Когда я перехожу по маршруту /projects/upload
, вместо формы я получаю пустую страницу. Однако маршрут simple_upload.html
имеет такую структуру:
{% extends "base.html" %}
<h1>H</h1>
{% load static %}
{% block content %}
<form method="post" enctype="multipart/form-data">
{% csrf_token %}
<input type="file" name="myfile">
<button type="submit">Upload</button>
</form>
{% if uploaded_file_url %}
<p>File uploaded at: <a href="{{ uploaded_file_url }}">{{ uploaded_file_url }}</a></p>
{% endif %}
<p><a href="{% url 'home' %}">Return to home</a></p>
{% endblock %}
Вы видите, я получаю пустую страницу.
Ошибки отсутствуют.
Я разобрался с проблемой. В шаблоне нужно написать {% block page_content %}
вместо {% block content %}
, потому что в base.html
у меня такая строка:
{% block page_content %}{% endblock %}