django_5:表單1——檔案上傳

來源:互聯網
上載者:User

標籤:read   write   div   請求   儲存檔案   ued   mod   har   ade   

上傳檔案1

class UserForm(forms.Form):    name = forms.CharField()    headImg = forms.FileField()def regist(req):    if req.method == ‘POST‘:        uf = UserForm(req.POST, req.FILES)        if uf.is_valid():            print(uf.cleaned_data[‘name‘])   #通過clean_data擷取欄位            print(req.FILES)                            #類字典對象<MultiValueDict: {‘headImg‘: [<InMemoryUploadedFile: Chrysanthemum.jpg (image/jpeg)>]}>
print(uf.cleaned_data[‘headImg‘])                  #上傳檔案的名字            print(uf.cleaned_data[‘headImg‘].name)               #上傳檔案的名字            print(uf.cleaned_data[‘headImg‘].size)            fp = open(‘/tmp/img/‘+uf.cleaned_data[‘headImg‘].name, ‘wb‘)  #開啟二進位檔案用於儲存            img = uf.cleaned_data[‘headImg‘].read()            fp.write(img)            fp.close()            return HttpResponse(‘ok‘)                      #成功返回ok,不會執行到下方的return    else:        uf = UserForm()                               #當傳入空,即綁定失敗,被執行,然後執行後邊,第一次請求時也會被執行    return render(req, ‘regist.html‘, {‘uf‘:uf})                

上傳檔案2:使用資料庫

models.py

class User(models.Model):    name = models.CharField(max_length=30)    sex = models.CharField(max_length=1, choices=sex_choices)    headImg = models.FileField(upload_to=‘./upload‘)    def __str__(self):        return self.name

設定admin.py,使可以在admin管理介面操作。

from django.contrib import adminfrom blog.models import User     #引入應用的表# Register your models here.admin.site.register(User)       #把User註冊到admin

資料庫中欄位儲存檔案路徑,預設會在工程下組建定義的upload目錄,可以在setting.py中修改,不知道修改哪個?

修改儲存路徑後,之前上傳過的怎麼辦,複製過去並修改,還是不變?

 

能不能通過把兩個方法合并?通過自己的web上傳到資料

 

django_5:表單1——檔案上傳

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.