1、創建一個Django應用程式
首先,創建一個新的Django應用程式。執行以下命令:
python manage.py startapp fileupload
2、定義文件模型
在fileupload/models.py
文件中,定義一個File
模型,其中包含FileField
字段:
from django.db import models
class File(models.Model):
file = models.FileField(upload_to='uploads/')
uploaded_at = models.DateTimeField(auto_now_add=True)
這裡,upload_to
參數指定上傳的文件保存在uploads/
文件夾中。
3、創建文件上傳和下載視圖
在fileupload/views.py
文件中,創建兩個視圖,用於處理文件上傳和下載:
from django.shortcuts import render, redirect
from .models import File
def upload_file(request):
if request.method == 'POST':
file = request.FILES['file']
File.objects.create(file=file)
return redirect('file_download')
return render(request, 'fileupload/upload.html')
def download_file(request):
files = File.objects.all()
return render(request, 'fileupload/download.html', {'files': files})
upload_file
視圖處理文件上傳。當HTTP請求的方法為POST時,從請求中獲取文件,並在File
模型中創建一個新的記錄。然後,重定向到file_download
視圖。否則,返回一個渲染的表單。
download_file
視圖檢索所有文件記錄,並在fileupload/download.html
模板中顯示它們。
4、設置URL路由
在fileupload/urls.py
文件中,設置URL路由:
from django.urls import path
from . import views
urlpatterns = [
path('upload/', views.upload_file, name='file_upload'),
path('download/', views.download_file, name='file_download'),
]
5、創建模板
在fileupload/templates/fileupload
文件夾中,創建兩個模板文件upload.html
和download.html
。
upload.html
模板中包含一個簡單的表單,用於上傳文件:
<form method="post" enctype="multipart/form-data">
{% csrf_token %}
<input type="file" name="file" required>
<button type="submit">Upload</button>
</form>
download.html
模板中列出可下載的文件:
{% for file in files %}
<a href="{{ file.file.url }}" download>{{ file.file.name }}</a>
<br>
{% endfor %}
6、配置靜態文件設置
在Django的設置文件(settings.py
)中,確保以下設置被啟用:
STATIC_URL = '/static/'
MEDIA_URL = '/media/'
MEDIA_ROOT = os.path.join(BASE_DIR, 'media')
並在urls.py
文件中添加以下代碼:
from django.conf import settings
from django.conf.urls.static import static
urlpatterns = [
# ...
] + static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)
7、遷移數據庫
執行以下命令來遷移數據庫:
python manage.py makemigrations
python manage.py migrate
8、測試應用程式
運行Django開發服務器:
python manage.py runserver
現在,您應該能夠在瀏覽器中訪問http://localhost:8000/upload/
和http://localhost:8000/download/
,並完成文件上傳和下載。