最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Python+django實現(xiàn)簡單的文件上傳

 更新時間:2016年08月17日 16:57:12   作者:Marksinoberg  
這篇文章主要為大家詳細(xì)介紹了Python+django實現(xiàn)簡單的文件上傳的相關(guān)代碼,感興趣的小伙伴們可以參考一下

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

步驟
 •創(chuàng)建Django項目,創(chuàng)建Django應(yīng)用
 •設(shè)計模型
 •處理urls.py 以及views.py
 •設(shè)計模板,設(shè)計表單
 •運行項目,查看數(shù)據(jù)庫

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

創(chuàng)建項目和應(yīng)用

django-admin startproject Django_upload

django-admin startapp app

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

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

設(shè)計模型

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

from __future__ import unicode_literals

from django.db import models

# Create your models here.

# User CLass for user,username and userimg path
class 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']

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

python manage.py syncdb 不能用了 

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

python manage.py makemigrations

python manage.py migrate

urls.py 以及 views.py

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

from django.shortcuts import render,render_to_response
from django import forms
from django.http import HttpResponse
from 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 Configuration

The `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 url
from django.contrib import admin
from app.views import *
urlpatterns = [
  url(r'^admin/', admin.site.urls),
  url(r'^register/$',registerNormalUser),
]

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

python manage.py createsuperuser

然后按照相應(yīng)的提示進行創(chuàng)建就可以了。 

設(shè)計模板以及表單

其實剛才就可以在views.py中看到一個為NormalUserForm的類,其存在的意義就是方便從request中取得我們需要的表單數(shù)據(jù)。而且,恐怕你也注意到了,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">: 表單特定的格式,注意上傳數(shù)據(jù)的時候把enctype明確就可以

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

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

 調(diào)試,開啟應(yīng)用

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

python manage.py runserver

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

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

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

總結(jié)

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

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

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

就是這樣了!

以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • Python定義一個函數(shù)的方法

    Python定義一個函數(shù)的方法

    這篇文章主要介紹了Python定義一個函數(shù)的方法及相關(guān)實例,需要的朋友們可以學(xué)習(xí)參考下。
    2020-06-06
  • python實現(xiàn)每次處理一個字符的三種方法

    python實現(xiàn)每次處理一個字符的三種方法

    這篇文章主要介紹了python實現(xiàn)每次處理一個字符的三種方法,是非常實用的字符串操作技巧,需要的朋友可以參考下
    2014-10-10
  • Python實現(xiàn)圖片分割的多種方法總結(jié)

    Python實現(xiàn)圖片分割的多種方法總結(jié)

    圖片分割是圖像處理中的一個重要任務(wù),它的目標(biāo)是將圖像劃分為多個區(qū)域或者對象,本文為大家整理了一些常用的分割方法,大家可以根據(jù)需求自行選擇
    2025-04-04
  • 使用python創(chuàng)建股票的時間序列可視化分析

    使用python創(chuàng)建股票的時間序列可視化分析

    這篇文章主要為大家詳細(xì)介紹了python創(chuàng)建股票的時間序列可視化分析,文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下,希望能夠給你帶來幫助
    2022-03-03
  • 通過python調(diào)用adb命令對App進行性能測試方式

    通過python調(diào)用adb命令對App進行性能測試方式

    這篇文章主要介紹了通過python調(diào)用adb命令對App進行性能測試方式,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-04-04
  • Python如何判斷數(shù)獨是否合法

    Python如何判斷數(shù)獨是否合法

    這篇文章給大家介紹了如何利用Python判斷數(shù)獨是否合法,對大家學(xué)習(xí)python有一定的參考借鑒價值,有需要的可以一起來看看。
    2016-09-09
  • 關(guān)于np.meshgrid函數(shù)中的indexing參數(shù)問題

    關(guān)于np.meshgrid函數(shù)中的indexing參數(shù)問題

    Meshgrid函數(shù)在二維與三維空間中用于生成坐標(biāo)網(wǎng)格,便于進行圖像處理和空間數(shù)據(jù)分析,二維情況下,默認(rèn)使用笛卡爾坐標(biāo)系,而三維meshgrid則涉及不同的坐標(biāo)軸取法,在三維情況下,可能會出現(xiàn)坐標(biāo)軸排列序混亂
    2024-09-09
  • 使用matplotlib中scatter方法畫散點圖

    使用matplotlib中scatter方法畫散點圖

    這篇文章主要為大家詳細(xì)介紹了使用matplotlib中scatter方法畫散點圖,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2019-03-03
  • 如何使用Python中的正則表達(dá)式處理html文件

    如何使用Python中的正則表達(dá)式處理html文件

    html類型的文本數(shù)據(jù)內(nèi)容是由前端代碼書寫的標(biāo)簽+文本數(shù)據(jù)的格式,可以直接在chrome瀏覽器打開,清楚的展示出文本的格式,下面這篇文章主要給大家介紹了關(guān)于如何使用Python中的正則表達(dá)式處理html文件的相關(guān)資料,需要的朋友可以參考下
    2023-04-04
  • Django如何在不停機的情況下創(chuàng)建索引

    Django如何在不停機的情況下創(chuàng)建索引

    在本篇內(nèi)容里小編給大家整理的是關(guān)于Django如何在不停機的情況下創(chuàng)建索引的相關(guān)文章,有興趣的朋友們參考學(xué)習(xí)下。
    2020-08-08

最新評論

彰化市| 新昌县| 紫阳县| 孝昌县| 尚志市| 浠水县| 山东省| 阳谷县| 崇左市| 子长县| 泾阳县| 平塘县| 崇仁县| 鄯善县| 南木林县| 鹤壁市| 抚州市| 靖远县| 新龙县| 胶南市| 赤城县| 万载县| 黄陵县| 武清区| 沂南县| 安龙县| 白朗县| 郑州市| 松潘县| 裕民县| 依安县| 邵东县| 托克托县| 太康县| 内黄县| 衡阳市| 衡阳县| 分宜县| 平塘县| 西华县| 南汇区|