python中Django文件上傳方法詳解
Django上傳文件最簡(jiǎn)單最官方的方法
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ù)會(huì)自動(dòng)把文件的名稱修改為日期型的名稱,不會(huì)重名。
相關(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')
]
在項(xiàng)目目錄的urls.py文件添加
from django.urls import path, include
urlpatterns = [
path('quotes/', include('quotes.urls', namespace='quote'))
]
效果圖

知識(shí)點(diǎn)擴(kuò)展:
最簡(jiǎn)單的文件下載功能的實(shí)現(xiàn)
將文件流放入HttpResponse對(duì)象即可,如
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)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
- Django 如何實(shí)現(xiàn)文件上傳下載
- Django和Ueditor自定義存儲(chǔ)上傳文件的文件名
- 詳解Django自定義圖片和文件上傳路徑(upload_to)的2種方式
- 基于django和dropzone.js實(shí)現(xiàn)上傳文件
- Django后端分離 使用element-ui文件上傳方式
- Django Admin 上傳文件到七牛云的示例代碼
- Django實(shí)現(xiàn)任意文件上傳(最簡(jiǎn)單的方法)
- Django 解決上傳文件時(shí),request.FILES為空的問(wèn)題
- Django中文件上傳和文件訪問(wèn)微項(xiàng)目的方法
- django 文件上傳功能的相關(guān)實(shí)例代碼(簡(jiǎn)單易懂)
- django上傳文件的三種方式
相關(guān)文章
實(shí)踐Python的爬蟲框架Scrapy來(lái)抓取豆瓣電影TOP250
這篇文章主要介紹了實(shí)踐Python的爬蟲框架Scrapy來(lái)抓取豆瓣電影TOP250的過(guò)程,文中的環(huán)境基于Windows操作系統(tǒng),需要的朋友可以參考下2016-01-01
Pycharm中Python環(huán)境配置常見(jiàn)問(wèn)題解析
這篇文章主要介紹了Pycharm中Python環(huán)境配置常見(jiàn)問(wèn)題,結(jié)合圖文形式分析了Pycharm中Python環(huán)境配置模塊路徑問(wèn)題、虛擬環(huán)境創(chuàng)建、配置遠(yuǎn)程服務(wù)器、連接數(shù)據(jù)庫(kù)等常見(jiàn)問(wèn)題與操作方法,需要的朋友可以參考下2020-01-01
UI自動(dòng)化定位常用實(shí)現(xiàn)方法代碼示例
這篇文章主要介紹了UI自動(dòng)化定位常用實(shí)現(xiàn)方法代碼示例,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2020-10-10
Python遠(yuǎn)程視頻監(jiān)控程序的實(shí)例代碼
這篇文章主要介紹了Python遠(yuǎn)程視頻監(jiān)控程序的實(shí)例代碼,需要的朋友可以參考下2019-05-05
2022最新Python日志庫(kù)logging總結(jié)
這篇文章主要介紹了2022最新Python日志庫(kù)logging總結(jié),Python logging 庫(kù)設(shè)計(jì)的真的非常靈活,如果有特殊的需要還可以在這個(gè)基礎(chǔ)的 logging 庫(kù)上進(jìn)行改進(jìn),創(chuàng)建新的 Handler 類解決實(shí)際開(kāi)發(fā)中的問(wèn)題,需要的朋友可以參考下2022-05-05
python lxml中etree的簡(jiǎn)單應(yīng)用
這篇文章主要介紹了python lxml中etree的簡(jiǎn)單應(yīng)用,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2019-05-05

