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

首頁 > 編程 > Python > 正文

Python+django實現簡單的文件上傳

2019-11-25 16:36:40
字體:
來源:轉載
供稿:網友

今天分享一下Django實現的簡單的文件上傳的小例子。

步驟
 •創建Django項目,創建Django應用
 •設計模型
 •處理urls.py 以及views.py
 •設計模板,設計表單
 •運行項目,查看數據庫

下面我們就一起來分別完成每一個小部分吧。

創建項目和應用

django-admin startproject Django_upload

django-admin startapp app

添加一個名為upload的目錄,待會要用哦。

然后記得在settings.py 中的INSTALLED_APPS中加上'app',。注意那個小逗號就行了~~

設計模型

上傳文件需要知道是誰上傳的,上傳了什么。所以我們的 模型很簡單,一個用戶名,一個文件名即可。如下app.models.py

from __future__ import unicode_literalsfrom django.db import models# Create your models here.# User CLass for user,username and userimg pathclass NormalUser(models.Model):  username = models.CharField(max_length=30)  headImg = models.FileField(upload_to='./upload')  def __unicode__(self):    return self.username  class Meta:    ordering = ['username']

模型創建完成了,接下來我們就趕緊同步一下數據庫吧。命令很簡單,由于我的Django版本是1.9.6的, 所以原來的

python manage.py syncdb 不能用了 

我們可以使用下面的命令來代替

python manage.py makemigrations

python manage.py migrate

urls.py 以及 views.py

這兩個文件就是為了實現MVC模型的V,C而存在的。
views.py 如下:

from django.shortcuts import render,render_to_responsefrom django import formsfrom django.http import HttpResponsefrom app.models import *# Create your views here.class NormalUserForm(forms.Form):  username = forms.CharField()  headImg = forms.FileField()def registerNormalUser(request):  if request.method == "POST":    uf = NormalUserForm(request.POST,request.FILES)    if uf.is_valid():      # get the info of the form      username = uf.cleaned_data['username']      headImg = uf.cleaned_data['headImg']      # write in database      normalUser = NormalUser()      normalUser.username = username      normalUser.headImg = headImg      normalUser.save()      return HttpResponse('Upload Succeed!')  else:    uf = NormalUserForm()  return render(request,'register.html',{'uf':uf})

urls.py

"""Django_upload URL ConfigurationThe `urlpatterns` list routes URLs to views. For more information please see:  https://docs.djangoproject.com/en/1.9/topics/http/urls/Examples:Function views  1. Add an import: from my_app import views  2. Add a URL to urlpatterns: url(r'^$', views.home, name='home')Class-based views  1. Add an import: from other_app.views import Home  2. Add a URL to urlpatterns: url(r'^$', Home.as_view(), name='home')Including another URLconf  1. Import the include() function: from django.conf.urls import url, include  2. Add a URL to urlpatterns: url(r'^blog/', include('blog.urls'))"""from django.conf.urls import urlfrom django.contrib import adminfrom app.views import *urlpatterns = [  url(r'^admin/', admin.site.urls),  url(r'^register/$',registerNormalUser),]

一般來說我們會創建一個超級管理員,命令如下:

python manage.py createsuperuser

然后按照相應的提示進行創建就可以了。 

設計模板以及表單

其實剛才就可以在views.py中看到一個為NormalUserForm的類,其存在的意義就是方便從request中取得我們需要的表單數據。而且,恐怕你也注意到了,NormalUserForm的字段和NormalUser模型是一樣的呢。各中哲理自己品味吧 :-)

templates/register.html

<!DOCTYPE html><html lang="en"><head>  <meta charset="UTF-8">  <title>Register</title></head><body><h2 align="center">Register</h2><form method="POST" enctype="multipart/form-data">  {% csrf_token %}  {{ uf.as_p }}  <input type="submit" value="Submit"></form></body></html>

這里面比較重要的地方有三點:
 •<form method="POST" enctype="multipart/form-data">: 表單特定的格式,注意上傳數據的時候把enctype明確就可以

 •{% csrf_token %}: 跨域請求,我們需要在表單標簽的內部加上這個模板標簽,而且要在views.py中配合render而不是render_to_response來實現

 •{{ uf.as_p }}: 使用.as_p 方式的話,django就會按照默認的樣式在模板頁面輸出表單的所有的字段。

 調試,開啟應用

好了,大部分的任務都做好了,下面就打開我們的開發服務器來驗證一下吧。

python manage.py runserver

打開瀏覽器輸入http://127.0.0.1:8000/register

然后按要求填寫表單,就可以了。彩蛋就是加上了is_valid()方法的views.py會自動的幫助我們對表單數據字段進行驗證!

打開我們的數據庫管理軟件,就會發現里面存儲的只是路徑,而并不是真正的數據。這也體現了大數據存儲的核心理念了。點擊upload目錄,發現文件確實上傳成功了!

總結

今天的這個小例子雖然很簡單,但是里面也有很多值得我們推敲的地方,我的收獲如下。
 •使用models.FileField()實現文件上傳組件

 •對應模型添加一個表單類,字段相同。這樣對于表單數據的獲取會更加更加的方便。uf = NormalUserForm(request.POST,request.FILES)。

 •模板界面表單enctype格式,以及.as_p方式的在html頁面上的表單輸出

就是這樣了!

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持武林網。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 四川省| 肇州县| 灵璧县| 嘉定区| 济源市| 吴旗县| 泰安市| 奉贤区| 武平县| 南宁市| 云龙县| 哈密市| 株洲市| 九龙县| 师宗县| 兖州市| 周宁县| 环江| 龙里县| 彭州市| 固阳县| 永胜县| 烟台市| 琼结县| 闻喜县| 尼木县| 新竹市| 栾川县| 临潭县| 大悟县| 新营市| 松溪县| 宜阳县| 绥芬河市| 新兴县| 松江区| 公安县| 河西区| 瑞丽市| 洛川县| 桦南县|