教你用Django將前端的數(shù)據(jù)存入Mysql數(shù)據(jù)庫
1.在app下的models.py中創(chuàng)建新的模板
具體代碼如下:
class Apply(models.Model): clas = models.CharField(max_length=32, verbose_name="班級(jí)") name = models.CharField(max_length=32, verbose_name="姓名") number = models.CharField(max_length=15, verbose_name="學(xué)號(hào)") email = models.CharField(max_length=32, verbose_name="郵箱") phone = models.CharField(max_length=11, verbose_name="手機(jī)號(hào)") zhiyuan1 = models.EmailField(max_length=32, verbose_name="志愿一") zhiyuan2 = models.EmailField(max_length=32, verbose_name="志愿二")
Apply類下的clas,name這些通過數(shù)據(jù)遷移會(huì)變成mysql數(shù)據(jù)庫中的列表名
2.數(shù)據(jù)遷移(用pycharm自帶的Terminal工具即可)
python manage.py makemigrations finalapp python manage.py migrate finalapp
finalapp是我app的名字,大家數(shù)據(jù)遷移的時(shí)候記得換成自己app的名字
下面是我數(shù)據(jù)遷移之后的mysql數(shù)據(jù)庫,可以看到finalapp_apply表已經(jīng)創(chuàng)建成功,雙擊點(diǎn)開就可以查看表,新創(chuàng)建的表是什么數(shù)據(jù)都沒有的,圖中的是我的前端通過form表單提交到數(shù)據(jù)庫的
3.在app下的views.py中創(chuàng)建新的視圖
具體代碼如下:
def apply(request): if request.method == "POST": # 判斷請(qǐng)求為POST請(qǐng)求則是提交表單 apply = Apply() # 創(chuàng)建一個(gè)apply實(shí)例 clas = request.POST.get("clas") # 獲取提交表單中的clas值,賦值給clas name = request.POST.get("name") # 獲取提交表單中的name值,賦值給變量name number = request.POST.get("number") email = request.POST.get("email") phone = request.POST.get("phone") zhiyuan1 = request.POST.get("zhiyuan1") zhiyuan2 = request.POST.get("zhiyuan2") apply.clas = clas #給實(shí)例賦值 apply.name = name apply.number = number apply.email = email apply.phone = phone apply.zhiyuan1 = zhiyuan1 apply.zhiyuan2 = zhiyuan2 apply.save() # 保存實(shí)例,把數(shù)據(jù)存到數(shù)據(jù)庫 return render(request, 'applysuccessful.html') #數(shù)據(jù)保存之后,從apply網(wǎng)頁跳轉(zhuǎn)到成功的頁面 else: return render(request, 'apply.html') #沒有數(shù)據(jù)的時(shí)候,跳轉(zhuǎn)到apply網(wǎng)頁
4.前端
具體代碼如下:
<form action="/apply/" method="post" style="padding-top: 30px"> {% csrf_token %} <p> <label>班 級(jí):<input type="text" name="clas"></label> </p> <p> <label>姓 名:<input type="text" name="name"></label> </p> <p> <label>學(xué) 號(hào):<input type="text" name="number"></label> </p> <p> <label>郵 箱:<input type="text" name="email"></label> </p> <p> <label>手機(jī)號(hào):<input type="text" name="phone"></label> </p> <p> <label>志愿一:<input type="text" name="zhiyuan1"></label> </p> <p> <label>志愿二:<input type="text" name="zhiyuan2"></label> </p> <input type="submit" value="提交"> </form>
form表單必須寫 action 屬性,它規(guī)定當(dāng)提交表單時(shí),向何處發(fā)送表單數(shù)據(jù)。
{%csrf_token%}:在Django中我們需要在templates的form中加入{%csrf_token%}這串內(nèi)容,它的作用是當(dāng)我們get表單頁面時(shí),服務(wù)器返回頁面的同時(shí)也會(huì)向前端返回一串隨機(jī)字符,post提交時(shí)服務(wù)器會(huì)驗(yàn)證這串字符來確保用戶是在服務(wù)端返回的表單頁面中提交的數(shù)據(jù),防止有人通過例如jquery腳本向某個(gè)url不斷提交數(shù)據(jù),是一種數(shù)據(jù)提交的驗(yàn)證機(jī)制。
5.效果
可以看到前端提交的數(shù)據(jù)已經(jīng)存入到數(shù)據(jù)庫中
希望這篇文章可以幫助到你!??!
相關(guān)文章
利用python庫在局域網(wǎng)內(nèi)傳輸文件的方法
今天小編就為大家分享一篇利用python庫在局域網(wǎng)內(nèi)傳輸文件的方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧2018-06-06driver = webdriver.Chrome()報(bào)錯(cuò)問題及解決
這篇文章主要介紹了driver = webdriver.Chrome()報(bào)錯(cuò)問題及解決方案,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-02-02Python+selenium實(shí)現(xiàn)自動(dòng)循環(huán)扔QQ郵箱漂流瓶
這篇文章主要為大家詳細(xì)介紹了Python+selenium實(shí)現(xiàn)自動(dòng)循環(huán)扔QQ郵箱漂流瓶,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2018-05-05python連接MySQL數(shù)據(jù)庫實(shí)例分析
這篇文章主要介紹了python連接MySQL數(shù)據(jù)庫,實(shí)例分析了Python操作MySQL的相關(guān)技巧,需要的朋友可以參考下2015-05-05Python轉(zhuǎn)換字典成為對(duì)象,可以用"."方式訪問對(duì)象屬性實(shí)例
這篇文章主要介紹了Python轉(zhuǎn)換字典成為對(duì)象,可以用"."方式訪問對(duì)象屬性實(shí)例,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧2020-05-05詳解django的serializer序列化model幾種方法
序列化是將對(duì)象狀態(tài)轉(zhuǎn)換為可保持或傳輸?shù)母袷降倪^程。這篇文章主要介紹了詳解django的serializer序列化model幾種方法。具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2018-10-10如何將PySpark導(dǎo)入Python的放實(shí)現(xiàn)(2種)
這篇文章主要介紹了如何將PySpark導(dǎo)入Python的放實(shí)現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2020-04-04