欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Django+simpleui實現(xiàn)文件上傳預覽功能(詳細過程)

 更新時間:2025年02月10日 10:09:34   作者:Summer@123  
該文章詳細介紹了如何在Django框架中實現(xiàn)文件上傳、預覽和下載功能,并使用SimpleUI美化Django后臺界面,通過創(chuàng)建模型、表單、視圖和配置URL,實現(xiàn)了文件的存儲和管理,同時,文章還提到了配置媒體文件、創(chuàng)建模板以及在生產(chǎn)環(huán)境中的部署注意事項,感興趣的朋友一起看看吧

在 Django 中,文件通常不會直接存儲到 MySQL 數(shù)據(jù)庫中,而是存儲在文件系統(tǒng)或云存儲中,數(shù)據(jù)庫中只存儲文件的路徑或元數(shù)據(jù)。

1. 創(chuàng)建 Django 項目和應用

如果還沒有項目和應用,先創(chuàng)建一個:

django-admin startproject myproject
cd myproject
python manage.py startapp myapp

2. 配置 MySQL 數(shù)據(jù)庫

settings.py 中配置 MySQL 數(shù)據(jù)庫連接:

DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.mysql',
        'NAME': 'mydatabase',  # 數(shù)據(jù)庫名稱
        'USER': 'root',        # 數(shù)據(jù)庫用戶名
        'PASSWORD': 'password',# 數(shù)據(jù)庫密碼
        'HOST': 'localhost',   # 數(shù)據(jù)庫主機
        'PORT': '3306',        # 數(shù)據(jù)庫端口
    }
}

確保已安裝 MySQL 客戶端庫:

pip install mysqlclient

3. 創(chuàng)建模型

myapp/models.py 中創(chuàng)建一個模型來存儲文件信息:

from django.db import models
class UploadedFile(models.Model):
    name = models.CharField(max_length=255, verbose_name="文件名稱")
    file = models.FileField(upload_to='uploads/', verbose_name="文件")
    uploaded_at = models.DateTimeField(auto_now_add=True, verbose_name="上傳時間")
    def __str__(self):
        return self.name
    class Meta:
        verbose_name = "上傳文件"
        verbose_name_plural = "上傳文件"

4. 創(chuàng)建表單

myapp/forms.py 中創(chuàng)建一個表單來處理文件上傳:

from django import forms
from .models import UploadedFile
class UploadFileForm(forms.ModelForm):
    class Meta:
        model = UploadedFile
        fields = ['name', 'file']

5. 創(chuàng)建視圖

myapp/views.py 中創(chuàng)建視圖來處理文件的上傳、預覽和下載:

from django.shortcuts import render, get_object_or_404
from django.http import HttpResponse
from .models import UploadedFile
from .forms import UploadFileForm
import os
def upload_file(request):
    if request.method == 'POST':
        form = UploadFileForm(request.POST, request.FILES)
        if form.is_valid():
            form.save()
            return render(request, 'upload_success.html')
    else:
        form = UploadFileForm()
    return render(request, 'upload.html', {'form': form})
def preview_file(request, file_id):
    file = get_object_or_404(UploadedFile, id=file_id)
    return render(request, 'preview.html', {'file': file})
def download_file(request, file_id):
    file = get_object_or_404(UploadedFile, id=file_id)
    response = HttpResponse(file.file, content_type='application/force-download')
    response['Content-Disposition'] = f'attachment; filename={os.path.basename(file.file.name)}'
    return response

6. 配置 URL

myapp/urls.py 中配置 URL 路由:

from django.urls import path
from . import views
urlpatterns = [
    path('upload/', views.upload_file, name='upload_file'),
    path('preview/<int:file_id>/', views.preview_file, name='preview_file'),
    path('download/<int:file_id>/', views.download_file, name='download_file'),
]

myproject/urls.py 中包含應用的 URL:

from django.contrib import admin
from django.urls import path, include
urlpatterns = [
    path('admin/', admin.site.urls),
    path('myapp/', include('myapp.urls')),
]

7. 配置媒體文件

settings.py 中配置媒體文件的存儲路徑:

MEDIA_URL = '/media/'
MEDIA_ROOT = os.path.join(BASE_DIR, 'media')

myproject/urls.py 中添加媒體文件的 URL 配置:

from django.conf import settings
from django.conf.urls.static import static
urlpatterns += static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)

8. 創(chuàng)建模板

myapp/templates/ 目錄下創(chuàng)建以下模板文件:

upload.html(文件上傳頁面)

<!DOCTYPE html>
<html>
<head>
    <title>Upload File</title>
</head>
<body>
    <h1>Upload File</h1>
    <form method="post" enctype="multipart/form-data">
        {% csrf_token %}
        {{ form.as_p }}
        <button type="submit">Upload</button>
    </form>
</body>
</html>

upload_success.html(上傳成功頁面)

<!DOCTYPE html>
<html>
<head>
    <title>Upload Success</title>
</head>
<body>
    <h1>File Uploaded Successfully</h1>
    <a href="{% url 'upload_file' %}" rel="external nofollow" >Upload another file</a>
</body>
</html>

preview.html(文件預覽頁面)

<!DOCTYPE html>
<html>
<head>
    <title>Preview File</title>
</head>
<body>
    <h1>{{ file.name }}</h1>
    <p>Uploaded at: {{ file.uploaded_at }}</p>
    <a href="{% url 'download_file' file.id %}" rel="external nofollow" >Download</a>
</body>
</html>

9. 配置 SimpleUI

settings.py 中安裝并配置 SimpleUI:

INSTALLED_APPS = [
    ...
    'simpleui',
    'myapp',
    ...
]

SimpleUI 會自動美化 Django 后臺界面,你可以在 settings.py 中進一步配置 SimpleUI 的主題和其他選項。

10. 運行服務器并測試

運行 Django 開發(fā)服務器:

python manage.py runserver

訪問 http://127.0.0.1:8000/myapp/upload/ 進行文件上傳、預覽和下載的測試。

11. 部署

在生產(chǎn)環(huán)境中,確保配置好靜態(tài)文件和媒體文件的處理方式,并考慮使用云存儲服務(如 AWS S3)來存儲上傳的文件。

總結(jié)

通過以上步驟,可以實現(xiàn)管理員上傳文件并將文件信息存儲到 MySQL 數(shù)據(jù)庫,同時支持前端預覽和下載的功能。SimpleUI 用于美化 Django 后臺界面,提升用戶體驗。

到此這篇關(guān)于Django+simpleui實現(xiàn)文件上傳預覽功能的文章就介紹到這了,更多相關(guān)Django simpleui文件上傳預覽內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • 用表格幫你了解Python數(shù)據(jù)類型

    用表格幫你了解Python數(shù)據(jù)類型

    這篇文章主要為大家介紹了Python數(shù)據(jù)類型,具有一定的參考價值,感興趣的小伙伴們可以參考一下,希望能夠給你帶來幫助<BR>
    2022-01-01
  • Python 實現(xiàn)數(shù)組相減示例

    Python 實現(xiàn)數(shù)組相減示例

    今天小編就為大家分享一篇Python 實現(xiàn)數(shù)組相減示例,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2019-12-12
  • Python強大的自省機制詳解

    Python強大的自省機制詳解

    這篇文章主要為大家介紹了Python強大的自省機制,具有一定的參考價值,感興趣的小伙伴們可以參考一下,希望能夠給你帶來幫助
    2021-11-11
  • tensorflow之如何使用GPU而不是CPU問題

    tensorflow之如何使用GPU而不是CPU問題

    這篇文章主要介紹了tensorflow之如何使用GPU而不是CPU問題,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2023-05-05
  • 關(guān)于python中inspect模塊用法詳解

    關(guān)于python中inspect模塊用法詳解

    這篇文章主要介紹了關(guān)于python中inspect模塊用法詳解,獲取函數(shù)簽名對象。函數(shù)簽名包含了一個函數(shù)的信息,包括函數(shù)名、它的參數(shù)類型、它所在的類和名稱空間及其他信息,需要的朋友可以參考下
    2023-07-07
  • Python如何利用IMAP實現(xiàn)郵箱客戶端功能

    Python如何利用IMAP實現(xiàn)郵箱客戶端功能

    IMAP是另一種讀取電子郵件的協(xié)議,IMAP是讀取郵件服務器的電子郵件與公布欄信息的方法,也就是說IMAP 允許客戶端的郵件程序存取遠程的信息,這篇文章主要給大家介紹了關(guān)于Python如何利用IMAP實現(xiàn)郵箱客戶端功能的相關(guān)資料,需要的朋友可以參考下
    2021-09-09
  • Python設(shè)計模式之裝飾模式實例詳解

    Python設(shè)計模式之裝飾模式實例詳解

    這篇文章主要介紹了Python設(shè)計模式之裝飾模式,結(jié)合實例形式詳細分析了裝飾模式的概念、原理并結(jié)合Python實例形式分析了裝飾模式的相關(guān)使用技巧,需要的朋友可以參考下
    2019-01-01
  • Python反編譯的兩種實現(xiàn)方式

    Python反編譯的兩種實現(xiàn)方式

    這篇文章主要介紹了Python反編譯的兩種實現(xiàn)方式,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2024-06-06
  • python基礎(chǔ)學習之如何對元組各個元素進行命名詳解

    python基礎(chǔ)學習之如何對元組各個元素進行命名詳解

    python的元祖和列表類似,不同之處在于元祖的元素不能修改,下面這篇文章主要給大家介紹了關(guān)于python基礎(chǔ)學習之如何對元組各個元素進行命名的相關(guān)資料,文中通過示例代碼介紹的非常詳細,需要的朋友可以參考下
    2018-07-07
  • Python利用pyHook實現(xiàn)監(jiān)聽用戶鼠標與鍵盤事件

    Python利用pyHook實現(xiàn)監(jiān)聽用戶鼠標與鍵盤事件

    這篇文章主要介紹了Python利用pyHook實現(xiàn)監(jiān)聽用戶鼠標與鍵盤事件,很有實用價值的一個技巧,需要的朋友可以參考下
    2014-08-08

最新評論