У меня есть приложение для блога Django, в котором при публикации блога можно прикрепить и отправить файл.
Вот код views.py:
def user_own_blog(request):
if request.method == 'POST' and request.FILES['blog_document']:
title_b = request.POST.get('blog_title')
content_b = request.POST.get('blog_content')
file1 = request.FILES['blog_document']
fs = FileSystemStorage()
document_name = fs.save(file1.name, file1)
uploaded_document_url = fs.url(document_name)
b = Blog(title=title_b, content=content_b, blog_document=uploaded_document_url)
b.save()
return render(request, 'mysite/portfolio.html')
else:
return render(request, 'mysite/blog.html')
А здесьэто имена путей MEDIA_ROOT и MEDIA_URL:
STATIC_URL = '/static/'
MEDIA_URL = '/media/'
MEDIA_ROOT = os.path.join(BASE_DIR, 'media')
И следующий код для urls.py внутри приложения mysite:
urlpatterns=[ .....
......
] + static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)
Это структура проекта, в которой мне нужен носительпапка, которая будет присутствовать непосредственно в проекте Assignment1
Когда файл успешно загружается, он отображается следующим образом в /api.
Но существует два пути для мультимедиа: / media / media, как показано ниже: Я не могу найти дубликаты полей, которые я мог создать.
И при нажатии на ссылку файла: ошибка 404 не найдена.Я думаю, что имя файла MEDIA_ROOT неверно.
HTML-код для blog.html:
{% extends 'mysite/base.html' %}
{% load static %}
{% block content %}
<div class="container">
<div class="row">
<div class="col-sm-6 mx-auto" style="margin-top: 70px">
<form action="{% url 'user_own_blog' %}" method="POST" enctype="multipart/form-data">
{% csrf_token %}
<div class="form-group row">
<label for="example-email-input" class="col-2 col-form-label">Title</label>
<div class="col-10">
<input name = "blog_title" class="form-control" type="text">
</div>
</div>
<div class="form-group row">
<label for="example-email-input" class="col-2 col-form-label">Content</label>
<div class="col-10">
<textarea name = "blog_content" class="form-control" rows = "5" cols = "50" type="text"> </textarea>
</div>
</div>
<div class="form-group row">
<label for="example-email-input" class="col-2 col-form-label">Upload File</label>
<div class="col-10">
<input name = "blog_document" class="form-control" type="file">
</div>
</div>
<div class="pull-right">
<button type="submit" class="btn btn-primary float-right">Post</button>
</div>
</form>
</div>
</div>
</div>
{% endblock %}