python中Django文件上傳方法詳解
Django上傳文件最簡單最官方的方法
1.配置media路徑
在settings.py中添加如下代碼:
MEDIA_ROOT = os.path.join(BASE_DIR, 'media')
2.定義數(shù)據(jù)表
import os from django.db import models from django.utils.timezone import now as timezone_now def upload_to(instance, filename): now = timezone_now() base, ext = os.path.splitext(filename) ext = ext.lower() return f'quotes/{now:%Y/%m/%Y%m%d%H%M%S}{ext}' class Quote(models.Model): class Meta: verbose_name = 'quote' verbose_name_plural = verbose_name author = models.CharField('author', max_length=200) quote = models.TextField('quote') picture = models.ImageField('picture', upload_to=upload_to, blank=True, null=True) def __str__(self): return self.quote
這里的upload_to函數(shù)會自動把文件的名稱修改為日期型的名稱,不會重名。
相關(guān)推薦:《Python視頻教程》
3.添加form表單
forms.py文件
from django import forms from .models import Quote class QuoteForm(forms.ModelForm): class Meta: model = Quote fields = '__all__'
4.編寫視圖代碼
from django.shortcuts import render, redirect from .forms import QuoteForm def add_quote(request): form = QuoteForm() if request.method == 'POST': form = QuoteForm( data=request.POST, files=request.FILES ) if form.is_valid(): form.save() return redirect('quote:add_quote') else: return render(request, 'quotes/add_quote.html', { 'form': form })
5.編寫模板html代碼
<form action="{% url 'quote:add_quote' %}" method="post" enctype="multipart/form-data"> {% csrf_token %} {{ form.as_p }} <button type="submit">save</button> </form>
6.添加url映射
在app的目錄的urls.py添加 from django.urls import path from quotes.views import add_quote app_name = 'quote' urlpatterns = [ path('add/', add_quote, name='add_quote') ]
在項目目錄的urls.py文件添加
from django.urls import path, include urlpatterns = [ path('quotes/', include('quotes.urls', namespace='quote')) ]
效果圖
知識點擴展:
最簡單的文件下載功能的實現(xiàn)
將文件流放入HttpResponse對象即可,如
def file_download(request): # do something... with open('file_name.txt') as f: c = f.read() return HttpResponse(c)
到此這篇關(guān)于python中Django文件上傳方法詳解的文章就介紹到這了,更多相關(guān)Django文件上傳方法內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
- Django 如何實現(xiàn)文件上傳下載
- Django和Ueditor自定義存儲上傳文件的文件名
- 詳解Django自定義圖片和文件上傳路徑(upload_to)的2種方式
- 基于django和dropzone.js實現(xiàn)上傳文件
- Django后端分離 使用element-ui文件上傳方式
- Django Admin 上傳文件到七牛云的示例代碼
- Django實現(xiàn)任意文件上傳(最簡單的方法)
- Django 解決上傳文件時,request.FILES為空的問題
- Django中文件上傳和文件訪問微項目的方法
- django 文件上傳功能的相關(guān)實例代碼(簡單易懂)
- django上傳文件的三種方式
相關(guān)文章
python?裝飾器(Decorators)原理說明及操作代碼
裝飾器(Decorators)是 Python 的一個重要部分,本文由淺入深給大家介紹了python?裝飾器Decorators原理,感興趣的朋友跟隨小編一起看看吧2021-12-12Python語言實現(xiàn)獲取主機名根據(jù)端口殺死進程
這篇文章主要介紹了Python語言實現(xiàn)獲取主機名根據(jù)端口殺死進程的相關(guān)資料,需要的朋友可以參考下2016-03-03Python+Tkinter實現(xiàn)股票K線圖的繪制
K線圖又稱蠟燭圖,常用說法是“K線”。K線是以每個分析周期的開盤價、最高價、最低價和收盤價繪制而成。本文將利用Python+Tkinter實現(xiàn)股票K線圖的繪制,需要的可以參考一下2022-08-08Python利用psutil實現(xiàn)獲取硬件,網(wǎng)絡(luò)和進程信息
Python?有一個第三方模塊叫?psutil,專門用來獲取操作系統(tǒng)以及硬件相關(guān)的信息,比如:CPU、磁盤、網(wǎng)絡(luò)、內(nèi)存等等。下面來看一下它的用法2022-07-07