Django静态文件&媒体文件&文件上传
    		       		warning:
    		            这篇文章距离上次修改已过426天,其中的内容可能已经有所变动。
    		        
        		                
                在Django中处理静态文件、媒体文件以及文件上传,通常需要以下步骤:
- 设置
STATIC_URL,STATICFILES_DIRS, 和STATIC_ROOT来配置静态文件。 - 设置
MEDIA_URL和MEDIA_ROOT来配置媒体文件。 - 创建一个表单来处理文件上传。
 - 配置URLs来服务静态文件和媒体文件。
 
以下是示例代码:
settings.py:
# 静态文件设置
STATIC_URL = '/static/'
STATICFILES_DIRS = [
    os.path.join(BASE_DIR, 'static'),
]
STATIC_ROOT = os.path.join(BASE_DIR, 'staticfiles')
 
# 媒体文件设置
MEDIA_URL = '/media/'
MEDIA_ROOT = os.path.join(BASE_DIR, 'media')forms.py:
from django import forms
 
class DocumentForm(forms.Form):
    file = forms.FileField()views.py:
from django.shortcuts import render
from django.http import HttpResponseRedirect
from .forms import DocumentForm
from django.core.files.storage import FileSystemStorage
 
def upload_file(request):
    if request.method == 'POST':
        form = DocumentForm(request.POST, request.FILES)
        if form.is_valid():
            myfile = request.FILES['file']
            fs = FileSystemStorage()
            filename = fs.save(myfile.name, myfile)
            uploaded_file_url = fs.url(filename)
            return HttpResponseRedirect('/success/url/')
    else:
        form = DocumentForm()
    return render(request, 'upload.html', {
        'form': form
    })urls.py:
from django.conf import settings
from django.conf.urls.static import static
 
urlpatterns = [
    # ... your other URL patterns ...
]
 
if settings.DEBUG:
    urlpatterns += static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)
    urlpatterns += static(settings.STATIC_URL, document_root=settings.STATIC_ROOT)upload.html:
<form method="post" enctype="multipart/form-data">
    {% csrf_token %}
    {{ form.as_p }}
    <button type="submit">Upload file</button>
</form>确保你的MEDIA_ROOT和STATIC_ROOT目录在你的文件系统中存在,并且在生产环境中,你需要一个Web服务器(如Apache或Nginx)来服务这些静态文件和媒体文件。
评论已关闭