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/,並完成文件上傳和下載。
2342

被折叠的 条评论
为什么被折叠?



