我正在开发一个 Django 项目,我试图处理文件上传,但遇到了一些问题。上传的文件丢失,并且我没有媒体文件的完整路径。这是我到目前为止所做的: 型号 我有一个带有用于上传的 FileField 的模型:
class Article(TrackingModel):
titleArt = models.CharField(max_length=200)
descriptionArt = models.TextField()
content = models.FileField(upload_to='articles/%Y/%m/%d')
section = models.ForeignKey(Section, on_delete=models.CASCADE)
is_accepted = models.BooleanField(default=False)
created_by = models.ForeignKey(User, on_delete=models.CASCADE)
def __str__(self):
return self.titleArt
设置 我对媒体文件使用以下设置:
MEDIA_ROOT = BASE_DIR / 'media'
MEDIA_URL = 'media/'
网址 我已经设置了这样的 URL 模式:
from django.conf import settings
from django.conf.urls.static import static
urlpatterns = [
path('admin/', admin.site.urls),
path('ciems_administration/', include('administration.urls')),
path('auth/', include('accounts.urls')),
path('', include('intelsight.urls')),
]
if settings.DEBUG:
urlpatterns += static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)
模板 这是模板的片段,其中显示了文件详细信息:
<div class="container">
<h1>Report Details</h1>
{{ article.titleArt }}<br>
{{ article.descriptionArt }}<br>
{{ article.content.url }}<br>
{{ article.section }}<br>
{{ article.created_at }}<br>
{{ article.updated_at }}<br>
<a href="{% url 'articleList' %}" class="btn btn-primary">Back</a>
</div>[![enter image description here](https://i.sstatic.net/O9jkZnK1.jpg)](https://i.sstatic.net/O9jkZnK1.jpg)
问题 上传的文件路径显示为/media/...,但文件实际上并不存在于媒体目录中。 文件上传似乎不起作用,并且我不确定文件是否正确保存。
我尝试过的 已验证 MEDIA_ROOT 和 MEDIA_URL 设置是否正确。 确保媒体目录存在并且具有正确的权限。 检查开发期间提供媒体文件的 DEBUG 是否为 True。
我想是因为这条线
content = models.FileField(upload_to='articles/%Y/%m/%d')
可以更改文件保存路径吗? 就像不要使用“/”