【Django】文件读取时路径问题

其实之前已经解决过类似问题了,现在又遇到了还要重新百度。要命的是这次百度不到结果了就很迷。还是来记录一下。

django中文件读取时相对路径是以manage.py所在位置为基准的

  • 4
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
要实现上传文件到指定路径,可以使用Django自带的FileField和Form组合来完成。具体步骤如下: 1.在forms.py中定义一个Form类,用于处理上传的表单数据,例如: ```python from django import forms class UploadForm(forms.Form): file = forms.FileField() ``` 2.在views.py中定义一个视图函数,用于接收用户提交的表单数据,并将上传的文件保存到指定路径中,例如: ```python import os from django.conf import settings from django.shortcuts import render from .forms import UploadForm def upload(request): if request.method == 'POST': form = UploadForm(request.POST, request.FILES) if form.is_valid(): file = request.FILES['file'] path = os.path.join(settings.MEDIA_ROOT, file.name) with open(path, 'wb') as f: for chunk in file.chunks(): f.write(chunk) return render(request, 'upload_success.html') else: form = UploadForm() return render(request, 'upload.html', {'form': form}) ``` 这使用了Python的open函数来打开一个文件并写入上传的文件内容,通过chunks方法将文件内容分块写入,以避免一次性读取文件占用过多内存。 3.在upload.html模板中定义一个表单,用于上传文件,并将其提交到视图函数中处理,例如: ```html <form method="post" enctype="multipart/form-data"> {% csrf_token %} {{ form.as_p }} <button type="submit">上传</button> </form> ``` 4.在settings.py中设置MEDIA_ROOT和MEDIA_URL,用于指定上传文件的存储路径和访问路径,例如: ```python MEDIA_ROOT = os.path.join(BASE_DIR, 'media') MEDIA_URL = '/media/' ``` 5.最后,需要在项目的urls.py中添加一个URL模式,用于将上传文件的访问路径映射到MEDIA_ROOT下的实际文件路径,例如: ```python from django.conf.urls.static import static from django.conf import settings urlpatterns = [ # ... ] + static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT) ``` 这样就可以实现上传文件到指定路径了。
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值