日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

Django(part17)--form表单提交数据

發布時間:2023/12/19 编程问答 21 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Django(part17)--form表单提交数据 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

學習筆記,僅供參考,有錯必糾



form表單


form表單的主要作用是和服務器進行交互,為服務器端提供數據。


  • name屬性

form表單有name屬性,name屬性類似于客戶端與服務器端之間的約定。

form表單中能使用name屬性的標簽:

<input> <select> <textarea>

form表單提交數據案例


首先,我們新建一個工程mywebsite3:

django-admin startproject mywebsite3

開啟服務:

python manage.py runserver

在項目文件夾下,新建一個模板文件夾templates,并更改settgins.py中TEMPLATES列表里的DIRS,設置模板路徑:

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

在項目下的mywebsite3文件夾中新建試圖模塊views.py,并創建本案例所需的視圖函數:

# -*- coding: utf-8 -*-from django.http import HttpResponse from django.shortcuts import renderdef test_form(request):'此視圖函數用于示意form表單的提交'if request.method == 'GET':# 返回表單return render(request, 'test_form.html')elif request.method == 'POST':# 返回表單提交內容的結果return HttpResponse("沒有結果")

設置路由(urls.py):

from django.contrib import admin from django.urls import path from django.urls import re_path from . import viewsurlpatterns = [path('admin/', admin.site.urls),re_path(r'^test_form/$', views.test_form) ]

test_form.html

<!DOCTYPE html> <html lang="en"> <head><meta charset="UTF-8"><title>Yes!</title> </head> <body><form><div>兔兔姓名:<input type="text" name="bunnyname"></div><div><input type="submit" value="提交"></div></form></body> </html>

在這個HTML文檔中,我們的form標簽沒有設定任何屬性值,這意味著數據將提交到當前頁面,且默認請求方式為GET(method=‘GET’)


向http://127.0.0.1:8000/test_form/發起請求

輸入兔兔姓名為Huang,并提交:

可以看到 提交的數據(Huang) 以及input標簽的 name屬性值(bunnyname) 均以查詢參數的方式增加到url中.


現在,我們嘗試一下提交表單數據到服務器,首先,我們要在settings.py中把中間鍵注釋掉:

MIDDLEWARE = ['django.middleware.security.SecurityMiddleware','django.contrib.sessions.middleware.SessionMiddleware','django.middleware.common.CommonMiddleware',#'django.middleware.csrf.CsrfViewMiddleware','django.contrib.auth.middleware.AuthenticationMiddleware','django.contrib.messages.middleware.MessageMiddleware','django.middleware.clickjacking.XFrameOptionsMiddleware', ]

我們更改一下test_form.html,在其中增加3個多選框,設置其name屬性為fav,并將其請求方式改變為POST:

<!DOCTYPE html> <html lang="en"> <head><meta charset="UTF-8"><title>Yes!</title> </head> <body><form method="POST"><div>兔兔姓名:<input type="text" name="bunnyname"></div><div>兔兔年齡:<input type="text" name="bunnyage"></div><div>兔兔食物:<input type="text" name="bunnyfood"></div>愛好:<input type="checkbox" name="fav" value="吃飯">吃飯 <input type="checkbox" name="fav" value="睡覺">睡覺<input type="checkbox" name="fav" value="舔毛">舔毛<div><input type="submit" value="提交"></div></form></body> </html>

再更改一下views.py:

def test_form(request):'此視圖函數用于示意form表單的提交'if request.method == 'GET':# 返回表單return render(request, 'test_form.html')elif request.method == 'POST':# 返回表單提交內容的結果dic = dict(request.POST)print("提交的內容是:" , dic)html = request.POST.get("bunnyname", "") + "的信息"return HttpResponse(html)

向http://127.0.0.1:8000/test_form/發起請求,并輸入數據,點擊提交:

得到如下結果:

再看一下我們的cmd界面中的輸出:

提交的內容是: {'bunnyname': ['Huang'], 'bunnyage': ['10'], 'bunnyfood': ['兔糧'], 'fav': ['吃飯', '舔毛']}

如果我想獲取鍵"fav"所對應的列表里的全部數據,那么我們可以使用request.POST.getlist()方法獲取:

views.py

def test_form(request):'此視圖函數用于示意form表單的提交'if request.method == 'GET':# 返回表單return render(request, 'test_form.html')elif request.method == 'POST':# 返回表單提交內容的結果dic = dict(request.POST)print("提交的內容是:" , dic)fav = request.POST.getlist('fav')print("fav=", fav) html = request.POST.get("bunnyname", "") + "的信息"return HttpResponse(html)

向http://127.0.0.1:8000/test_form/發起請求,并輸入數據,點擊提交:

cmd中的輸出為:

提交的內容是: {'bunnyname': ['Huang'], 'bunnyage': ['10'], 'bunnyfood': ['胡蘿卜'], 'fav': ['吃飯', '睡覺', '舔毛']} fav= ['吃飯', '睡覺', '舔毛']

從結果可知,我們拿到了fav中的列表。


我們在test_form.html中加入一個大文本框,并設置其name屬性為note:

<!DOCTYPE html> <html lang="en"> <head><meta charset="UTF-8"><title>Yes!</title> </head> <body><form method="POST"><div>兔兔姓名:<input type="text" name="bunnyname"></div><div>兔兔年齡:<input type="text" name="bunnyage"></div><div>兔兔食物:<input type="text" name="bunnyfood"></div>愛好:<input type="checkbox" name="fav" value="吃飯">吃飯 <input type="checkbox" name="fav" value="睡覺">睡覺<input type="checkbox" name="fav" value="舔毛">舔毛<div><textarea rows="10" cols="20" name="note">備注</textarea> </div><div><input type="submit" value="提交"></div></form></body> </html>

向http://127.0.0.1:8000/test_form/發起請求,并輸入數據,點擊提交:


看一看cmd中的輸出:

提交的內容是: {'bunnyname': ['Huang'], 'bunnyage': ['10'], 'bunnyfood': ['兔糧'], 'fav': ['吃飯', '舔毛'], 'note': ['安徽財經大學\r\n應用統計\t\t']} fav= ['吃飯', '舔毛']

總結

以上是生活随笔為你收集整理的Django(part17)--form表单提交数据的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。