国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁(yè) > 編程 > Python > 正文

Django項(xiàng)目實(shí)戰(zhàn)之用戶頭像上傳與訪問(wèn)的示例

2020-02-22 23:47:41
字體:
來(lái)源:轉(zhuǎn)載
供稿:網(wǎng)友

1 將文件保存到服務(wù)器本地

upload.html

<!DOCTYPE html><html lang="en"><head>  <meta charset="UTF-8"></head><body><form action="" method="post" enctype="multipart/form-data">  {% csrf_token %}  <div>用戶名:<input type="text" name="username"></div>  <div>頭像<input type="file" name="avatar"></div>  <input type="submit" value="提交"></form></body></html>

urls.py

from django.conf.urls import urlfrom app01 import viewsurlpatterns = [  url(r'^upload',views.upload)]

views.py

from django.shortcuts import render,HttpResponse def upload(request):  if request.method == 'POST':    name = request.POST.get('username')    avatar = request.FILES.get('avatar')    with open(avatar.name,'wb') as f:      for line in avatar:        f.write(line)    return HttpResponse('ok')  return render(request,'upload.html')

總結(jié)

這樣,我們就做好了一個(gè)基本的文件上傳小示例,這里需要注意的有幾點(diǎn):
 1.form表單里需要加上csrf_token驗(yàn)證
 2.文件的input框的type的值為file
 3.在視圖函數(shù)中獲取文件要用request.FILES.get()方法
 4.通過(guò)obj.name可以獲取文件的名字

2 將文件上傳到數(shù)據(jù)庫(kù)

models.py

from django.db import models class User(models.Model):  username = models.CharField(max_length=16)  avatar = models.FileField(upload_to='avatar')

views.py

def upload(request):  if request.method == 'POST':    name = request.POST.get('username')    avatar = request.FILES.get('avatar')    models.User.objects.create(username=name,avatar=avatar)    return HttpResponse('ok')   return render(request,'upload.html')

總結(jié)

上面已經(jīng)實(shí)現(xiàn)了將文件上傳到數(shù)據(jù)庫(kù)的功能,需要注意的有幾點(diǎn):
 1.所謂的上傳到數(shù)據(jù)庫(kù),不是講圖片本身或者二進(jìn)制碼放在數(shù)據(jù)庫(kù),實(shí)際上也是將文件上傳到服務(wù)器本地,數(shù)據(jù)庫(kù)只是存了一個(gè)文件的路徑,這樣用戶要調(diào)用文件的時(shí)候就可以通過(guò)路徑去服務(wù)器指定的位置找了
 2.創(chuàng)建ORM的時(shí)候,avatar字段要有一個(gè)upload_to=''的屬性,指定上傳后的文件放在哪里
 3.往數(shù)據(jù)庫(kù)添加的時(shí)候,文件字段屬性賦值跟普通字段在形式上是一樣的,如:models.User.objects.create(username=name,avatar=avatar)
 4.如果有兩個(gè)用戶上傳的文件名重復(fù),系統(tǒng)會(huì)自動(dòng)將文件改名,效果如下:

附加

功能我們是實(shí)現(xiàn)了,看起來(lái)我們?cè)谡{(diào)用文件的時(shí)候,只需要通過(guò)數(shù)據(jù)庫(kù)文件路徑已經(jīng)保存的文件本身就可以訪問(wèn)圖片,讓它出現(xiàn)在網(wǎng)頁(yè)上,其實(shí)并不是這樣,

發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 衡东县| 玛纳斯县| 务川| 建德市| 宁乡县| 介休市| 托克逊县| 潞城市| 焦作市| 镇坪县| 中超| 南阳市| 凌云县| 郧西县| 惠水县| 固安县| 额济纳旗| 湟中县| 泰来县| 南涧| 股票| 镇赉县| 古蔺县| 安徽省| 突泉县| 眉山市| 罗源县| 盱眙县| 广宗县| 新野县| 凤翔县| 龙井市| 衡山县| 马龙县| 崇义县| 盱眙县| 桐柏县| 辽阳县| 清远市| 黔东| 无锡市|