Django入門:實(shí)現(xiàn)一個頁面同時(shí)上傳文本和圖片凸克,并保存至MySQL

Django實(shí)現(xiàn)一個頁面上傳Char和Image至后臺MySQL

網(wǎng)上關(guān)于Django文件上傳的教程,大多數(shù)使用單獨(dú)頁面闷沥,并在上傳完成后頁面跳轉(zhuǎn)萎战,這種方法雖然利于展示,但是對剛熟悉Django和html的新手來說不太友好舆逃,對于將文本和圖片同時(shí)上傳至數(shù)據(jù)庫的簡單需求可以用如下方法解決:

首先在MySQL中建立數(shù)據(jù)庫蚂维,在Django中注冊項(xiàng)目、連接數(shù)據(jù)庫路狮,并定義

DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.mysql',#//數(shù)據(jù)庫的類型
        'USER': 'root',                    #數(shù)據(jù)庫服務(wù)器的用戶
        'PASSWORD': 'root',               #密碼
        'NAME': 'Mydata',
        # 'NAME':  所使用的的數(shù)據(jù)庫的名字虫啥,大小寫字母和MySQL中完全對應(yīng)
        'HOST': '127.0.0.1',               #主機(jī)
        'PORT': '3306'                    #端口
    }
}

由于使用了圖片的media功能,需要在TEMPLATES中聲明:

TEMPLATES = [
    {
        'BACKEND': 'django.template.backends.django.DjangoTemplates',
        'DIRS': [os.path.join(BASE_DIR, 'templates')]
        ,
        'APP_DIRS': True,
        'OPTIONS': {
            'context_processors': [
                'django.template.context_processors.media', #加上這一行
                'django.template.context_processors.debug',
                'django.template.context_processors.request',
                'django.contrib.auth.context_processors.auth',
                'django.contrib.messages.context_processors.messages',
            ],
        },
    },
]

增加Media文件夾用于存圖片文件:

MEDIA_ROOT = os.path.join(BASE_DIR, 'media')
#設(shè)置靜態(tài)文件路徑為主目錄下的media文件夾
MEDIA_URL = '/media/'
#url映射

models.py

在數(shù)據(jù)庫中定義字段格式奄妨,在這里定義了5個Char類型和一個Image類型:

#數(shù)據(jù)庫
class User(models.Model):
    username = models.CharField(max_length=50)
    password = models.CharField(max_length=50)
    age = models.CharField(max_length=100)
    gender = models.CharField(max_length=100)
    illhistry = models.CharField(max_length=100)
    img = models.ImageField(upload_to='')

    def __unicode__(self):
        return self.username

定義完成后要遷移:

python manage.py makemigrations
python manage.py migrate

views.py

然后在頁面后臺中增加獲取數(shù)據(jù)和存入數(shù)據(jù)庫的語句:

#上傳
def upload(req):
    if req.method == 'POST':
        uf = UserForm(req.POST,req.FILES)
        if uf.is_valid():
            #獲得表單數(shù)據(jù)
            username = uf.cleaned_data['username']
            password = uf.cleaned_data['password']
            age = uf.cleaned_data['age']
            gender = uf.cleaned_data['gender']
            illhistry = uf.cleaned_data['illhistry']
            img = uf.cleaned_data['img']
            #添加到數(shù)據(jù)庫
            user = User.objects.create(username= username,password=password,age=age,gender=gender,illhistry=illhistry,iris=iris)
            user.save()
            return HttpResponse('upload success!!')
    else:
        uf = UserForm()
        return render(req,'test.html',context= {'uf':uf})

test.html

頁面中的表單:

#上傳
                     {% csrf_token %}
                     <p class="meta-info">
                         姓名:{{uf.username}}
                     </p>
                     <p class="meta-info">
                         密碼:{{uf.password}}
                     </p>
                     <p class="meta-info">
                         年齡:{{uf.age}}
                     </p>
                     <p class="meta-info">
                         性別:{{uf.gender}}
                     </p>
                     <p class="meta-info">
                         既往病史:{{uf.illhistry}}
                     </p>
                     <p class="meta-info">
                         上傳圖片:{{uf.img}}
                     </p>
                     <p class="meta-info">
                         <input class="mybutton" type="submit" value = "完成" />
                     </p>

其他

這種方法將文本以Char的形式儲存在MySQl數(shù)據(jù)表中涂籽,圖片則是存儲其在服務(wù)器中的路徑。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末砸抛,一起剝皮案震驚了整個濱河市评雌,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌直焙,老刑警劉巖景东,帶你破解...
    沈念sama閱讀 222,590評論 6 517
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異奔誓,居然都是意外死亡斤吐,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 95,157評論 3 399
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來曲初,“玉大人体谒,你說我怎么就攤上這事【势牛” “怎么了抒痒?”我有些...
    開封第一講書人閱讀 169,301評論 0 362
  • 文/不壞的土叔 我叫張陵,是天一觀的道長颁褂。 經(jīng)常有香客問我故响,道長,這世上最難降的妖魔是什么颁独? 我笑而不...
    開封第一講書人閱讀 60,078評論 1 300
  • 正文 為了忘掉前任彩届,我火速辦了婚禮,結(jié)果婚禮上誓酒,老公的妹妹穿的比我還像新娘樟蠕。我一直安慰自己,他們只是感情好靠柑,可當(dāng)我...
    茶點(diǎn)故事閱讀 69,082評論 6 398
  • 文/花漫 我一把揭開白布寨辩。 她就那樣靜靜地躺著,像睡著了一般歼冰。 火紅的嫁衣襯著肌膚如雪靡狞。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 52,682評論 1 312
  • 那天隔嫡,我揣著相機(jī)與錄音甸怕,去河邊找鬼。 笑死腮恩,一個胖子當(dāng)著我的面吹牛梢杭,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播庆揪,決...
    沈念sama閱讀 41,155評論 3 422
  • 文/蒼蘭香墨 我猛地睜開眼式曲,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了缸榛?” 一聲冷哼從身側(cè)響起吝羞,我...
    開封第一講書人閱讀 40,098評論 0 277
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎内颗,沒想到半個月后钧排,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 46,638評論 1 319
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡均澳,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,701評論 3 342
  • 正文 我和宋清朗相戀三年恨溜,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了符衔。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 40,852評論 1 353
  • 序言:一個原本活蹦亂跳的男人離奇死亡糟袁,死狀恐怖判族,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情项戴,我是刑警寧澤形帮,帶...
    沈念sama閱讀 36,520評論 5 351
  • 正文 年R本政府宣布,位于F島的核電站周叮,受9級特大地震影響辩撑,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜仿耽,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 42,181評論 3 335
  • 文/蒙蒙 一合冀、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧项贺,春花似錦君躺、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,674評論 0 25
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至啥箭,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間治宣,已是汗流浹背急侥。 一陣腳步聲響...
    開封第一講書人閱讀 33,788評論 1 274
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留侮邀,地道東北人坏怪。 一個月前我還...
    沈念sama閱讀 49,279評論 3 379
  • 正文 我出身青樓,卻偏偏與公主長得像绊茧,于是被迫代替她去往敵國和親铝宵。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,851評論 2 361

推薦閱讀更多精彩內(nèi)容