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')
]
在項(xiàng)目目錄的urls.py文件添加
from django.urls import path, include
urlpatterns = [
path('quotes/', include('quotes.urls', namespace='quote'))
]
效果圖

知識點(diǎn)擴(kuò)展:
最簡單的文件下載功能的實(shí)現(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 如何實(shí)現(xiàn)文件上傳下載
- Django和Ueditor自定義存儲上傳文件的文件名
- 詳解Django自定義圖片和文件上傳路徑(upload_to)的2種方式
- 基于django和dropzone.js實(shí)現(xiàn)上傳文件
- Django后端分離 使用element-ui文件上傳方式
- Django Admin 上傳文件到七牛云的示例代碼
- Django實(shí)現(xiàn)任意文件上傳(最簡單的方法)
- Django 解決上傳文件時,request.FILES為空的問題
- Django中文件上傳和文件訪問微項(xiàng)目的方法
- django 文件上傳功能的相關(guān)實(shí)例代碼(簡單易懂)
- django上傳文件的三種方式
相關(guān)文章
實(shí)踐Python的爬蟲框架Scrapy來抓取豆瓣電影TOP250
這篇文章主要介紹了實(shí)踐Python的爬蟲框架Scrapy來抓取豆瓣電影TOP250的過程,文中的環(huán)境基于Windows操作系統(tǒng),需要的朋友可以參考下2016-01-01
Pycharm中Python環(huán)境配置常見問題解析
這篇文章主要介紹了Pycharm中Python環(huán)境配置常見問題,結(jié)合圖文形式分析了Pycharm中Python環(huán)境配置模塊路徑問題、虛擬環(huán)境創(chuàng)建、配置遠(yuǎn)程服務(wù)器、連接數(shù)據(jù)庫等常見問題與操作方法,需要的朋友可以參考下2020-01-01
Python遠(yuǎn)程視頻監(jiān)控程序的實(shí)例代碼
這篇文章主要介紹了Python遠(yuǎn)程視頻監(jiān)控程序的實(shí)例代碼,需要的朋友可以參考下2019-05-05

