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

解決django中form表單設(shè)置action后無法回到原頁面的問題

 更新時(shí)間:2020年03月13日 17:38:15   作者:攻城獅的策劃  
這篇文章主要介紹了解決django中form表單設(shè)置action后無法回到原頁面的問題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧

django中form表單設(shè)置action后,點(diǎn)提交按鈕是跳轉(zhuǎn)到action頁面的,比如設(shè)置action為login,網(wǎng)址為192.168.1.128,跳轉(zhuǎn)后便會(huì)來到192.168.1.128/login,F(xiàn)5刷新也會(huì)是重新提交表單對(duì)話框,無法回到原頁面。

因此就要在django服務(wù)器進(jìn)行重定向,具體就是

from django.shortcuts import redirect
#最后返回原頁面
return redirect(url)

補(bǔ)充知識(shí):Django + Ajax發(fā)送POST表單,并將返回信息回顯到頁面中

將表單數(shù)據(jù)發(fā)送回后端,然后處理后端返回的信息并顯示在當(dāng)前頁面中,這里使用Ajax進(jìn)行處理;

那么先看js代碼:

<!--以下為 Ajax腳本 -->
  <script src="http://apps.bdimg.com/libs/jquery/2.1.4/jquery.min.js"></script>
  <script type="text/javascript">
  $(document).ready(function(){
   $("#save").click(function(){
   $.ajax({
     url:"/api/add_event/",    #url
     type: "POST",        #提交表單的類型,相當(dāng)于method="post"
     dataType: "json",      #dataType, 這個(gè)是請(qǐng)求后,返回的數(shù)據(jù)將以json格式顯示
     data:{"name": $("#id_name").val(),   #在"#"號(hào)后面是控件id, 所以千萬不要搞錯(cuò)了,要不然會(huì)出大事的
        "limit":$("#id_limit").val(),
        "address": $("#id_address").val(),
        "start_time": $("#id_start_time").val(),
        "status": $("#id_status").val(),
     },                #Data這個(gè)地方,必須要獲取數(shù)據(jù),代表將獲取到的數(shù)據(jù)發(fā)送到后端,后端再進(jìn)行處理
     success:function(data){      
      console.log(data);      #調(diào)試使用
      console.log(data.status);   #調(diào)試使用
      console.log(data.message);   #調(diào)試使用
      $(".text").text(data.message); #將后端返回到結(jié)果通過前端頁面進(jìn)行展示

    },    #注意標(biāo)點(diǎn)
   });     #需要注意標(biāo)點(diǎn)符號(hào),如果標(biāo)點(diǎn)符合錯(cuò)誤了,那ajax基本上都不會(huì)執(zhí)行(否則,后果很嚴(yán)重哦)
   });     #注意標(biāo)點(diǎn)
  });     #注意標(biāo)點(diǎn)     
  </script>

注意(踩過的坑):

1.contentType: "application/json" ——>加入該語句時(shí),在后端print(request.POST)時(shí)無法獲取內(nèi)容,相當(dāng)于后端根本拿不到數(shù)據(jù)。因此在網(wǎng)上搜索了解到,使用contentType: “application/json”則data只能是json字符串;不使用時(shí)contentType一般為默認(rèn)的application/x-www-form-urlencoded格式, 因此如果不限制 POST格式,干脆就不寫。

2. 說說“data”這里面需要注意:data:{"name", $("#id_name").val(), } 這其中id_name必須為控件的id 名稱,使用其它的則不能獲取的數(shù)據(jù),這個(gè)還是得注意。

3. 標(biāo)注符號(hào),標(biāo)點(diǎn)符號(hào),標(biāo)點(diǎn)符號(hào),重要的事情說三遍,當(dāng)然可以借助專門的編輯器(我主要是懶哦,哈哈)

4. $(".text").text(data.message); 回顯在html中,是對(duì)后端返回的數(shù)據(jù)進(jìn)行處理

那行回顯在網(wǎng)頁面上面

<font color="red"> 
<span class="text"></span> 
</font> 

以下為html代碼

<div class="container">
  <div class="col-md-4 col-md-offset-4">
    <form id="form1" onsubmit="return false" action="##" method="POST" class="form-horizontal">

    <!--此處就是通過后端返回到前端,前端進(jìn)行展示-->
      <font color="red">
        <span class="text"></span>
      </font>

      <div class="form-group">
        <label for="id_name">發(fā)布會(huì)名稱:</label>
        <input type="text" name="name" class="form-control" placeholder="發(fā)布會(huì)名稱" maxlength="128" required id="id_name" />
      </div>
      <div class="form-group">
        <label for="id_limit">Limit:</label>
        <input type="number" name="limit" class="form-control" required id="id_limit" />
      </div>
      <div class="form-group">
        <label for="id_address">發(fā)布會(huì)地址:</label>
        <input type="text" name="address" class="form-control" placeholder="地址" maxlength="128" required id="id_address" />
      </div>
      <div class="form-group">
        <label for="id_start_time">開始日期:</label>
        <input type="text" name="start_time" required id="id_start_time" />
      </div>

      <div class="form-group">
        <label for="id_status">發(fā)布狀態(tài):</label>
        <select name="status" id="id_status">
         <option value="blank">-----</option>
         <option value="1">True</option>
         <option value="0">False</option>
        </select>
      </div>

      <div align="center">
       <input class="btn btn-lg btn-primary" id="save" type="submit" value="保存發(fā)布會(huì)" ></input >
      </div>
    </form>
  </div>
</div>

現(xiàn)在來看一下后端的代碼:

from django.views.decorators.csrf import csrf_exempt
@csrf_exempt
def add_event(request):
  if request.is_ajax():
    print(request.body)
    print(request.POST)

    name = request.POST.get('name', '') # 發(fā)布會(huì)名稱
    limit = request.POST.get('limit', '') # 限制人員
    status = request.POST.get('status', '') # 發(fā)布會(huì)狀態(tài)
    address = request.POST.get('address', '') # 發(fā)布會(huì)地址
    start_time = request.POST.get('start_time', '') # 發(fā)布會(huì)時(shí)間

    if name == '' or limit == '' or status == '' or start_time == '':
      return JsonResponse({'status': 10021, 'message': 'parameter error'})

    # 判斷發(fā)布會(huì)名稱重復(fù)
    result = Event.objects.filter(name=name)
    if result:
      return JsonResponse({'status': 10023, 'message': 'event name already exists'})

    if status == '':
      status = 1

    try:
      # Event.objects.create(id = eid, name = name, limit = limit, address = address, status = int(status), start_time=start_time)
      Event.objects.create(name=name, limit=limit, address=address, status=int(status), start_time=start_time)
    except ValidationError as e:
      error = 'start_time format error. It must be in YYYY-MM-DD HH:MM:SS'
      return JsonResponse({'status': 10024, 'message': error})
    return JsonResponse({'status': 200, 'message': 'add event success'})

1、在后端處理時(shí),我們需要加入:@csrf_exempt 標(biāo)記,所以導(dǎo)包from django.views.decorators.csrf import csrf_exempt,否則會(huì)出現(xiàn)錯(cuò)誤csrf_token錯(cuò)誤 (403)

2、request.is_ajax()判斷當(dāng)前是否是使用ajax 進(jìn)行表單提交

3、django request.POST / request.body

當(dāng)request.POST沒有值 需要考慮:

1.請(qǐng)求頭中的: Content-Type: application/x-www-form-urlencoded request.POST中才會(huì)有值(才會(huì)去request.body中解析數(shù)據(jù)),關(guān)于Content-Type前面也提到,不寫的錯(cuò)誤,它就是默認(rèn)。

request.body的請(qǐng)求數(shù)據(jù)

b'name=%E5%A4%BA%E5%A4%BA&limit=123‘

request.POST的數(shù)據(jù),django已進(jìn)行自動(dòng)處理

QueryDict: {‘name': [‘奪奪'], ‘limit': [‘123']

以上這篇解決django中form表單設(shè)置action后無法回到原頁面的問題就是小編分享給大家的全部內(nèi)容了,希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • python計(jì)算RPKM操作示例詳解

    python計(jì)算RPKM操作示例詳解

    這篇文章主要為大家介紹了python計(jì)算RPKM操作示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-07-07
  • python+openCV利用攝像頭實(shí)現(xiàn)人員活動(dòng)檢測

    python+openCV利用攝像頭實(shí)現(xiàn)人員活動(dòng)檢測

    這篇文章主要為大家詳細(xì)介紹了python+openCV利用攝像頭實(shí)現(xiàn)人員活動(dòng)檢測,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2019-06-06
  • Python時(shí)間戳轉(zhuǎn)換為字符串與字符串轉(zhuǎn)換為時(shí)間戳

    Python時(shí)間戳轉(zhuǎn)換為字符串與字符串轉(zhuǎn)換為時(shí)間戳

    在編寫代碼時(shí),往往涉及時(shí)間、日期、時(shí)間戳的相互轉(zhuǎn)換,下面這篇文章主要給大家介紹了關(guān)于Python時(shí)間戳轉(zhuǎn)換為字符串與字符串轉(zhuǎn)換為時(shí)間戳的相關(guān)資料,文中給出了詳細(xì)的實(shí)例代碼,需要的朋友可以參考下
    2023-02-02
  • python使用箱型圖剔除異常值的實(shí)現(xiàn)方法

    python使用箱型圖剔除異常值的實(shí)現(xiàn)方法

    python中的箱線圖可用于分析數(shù)據(jù)中的異常值,下面這篇文章主要給大家介紹了關(guān)于python使用箱型圖剔除異常值的相關(guān)資料,文中通過實(shí)例代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2023-05-05
  • Python web開發(fā)之用Tornado框架制作簡易表白墻網(wǎng)站

    Python web開發(fā)之用Tornado框架制作簡易表白墻網(wǎng)站

    這篇文章將用Python做Web開發(fā)。在Python當(dāng)中,WEB開發(fā)框架主要有三個(gè),本文將利用Tornado框架做一個(gè)簡單的表白墻網(wǎng)站,感興趣的可以了解一下
    2022-02-02
  • Python實(shí)現(xiàn)簡單遺傳算法(SGA)

    Python實(shí)現(xiàn)簡單遺傳算法(SGA)

    這篇文章主要為大家詳細(xì)介紹了Python實(shí)現(xiàn)簡單遺傳算法SGA,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2018-01-01
  • Python map及filter函數(shù)使用方法解析

    Python map及filter函數(shù)使用方法解析

    這篇文章主要介紹了Python map及filter函數(shù)使用方法解析,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-08-08
  • python網(wǎng)絡(luò)爬蟲精解之正則表達(dá)式的使用說明

    python網(wǎng)絡(luò)爬蟲精解之正則表達(dá)式的使用說明

    正則表達(dá)式是對(duì)字符串操作的一種邏輯公式,就是用事先定義好的一些特定字符、及這些特定字符的組合,組成一個(gè)“規(guī)則字符串”,這個(gè)“規(guī)則字符串”用來表達(dá)對(duì)字符串的一種過濾邏輯
    2021-09-09
  • Python自動(dòng)錄入ERP系統(tǒng)數(shù)據(jù)

    Python自動(dòng)錄入ERP系統(tǒng)數(shù)據(jù)

    這篇文章主要介紹了Python如何自動(dòng)錄入ERP系統(tǒng)數(shù)據(jù),用Python解決Excel問題的最佳方法,文章中有詳細(xì)的代碼示例,需要的朋友可以參考閱讀
    2023-04-04
  • python函數(shù)和python匿名函數(shù)lambda詳解

    python函數(shù)和python匿名函數(shù)lambda詳解

    這篇文章主要介紹了python函數(shù)和python匿名函數(shù)lambda,本文通過實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2022-09-09

最新評(píng)論

卢氏县| 天等县| 年辖:市辖区| 天津市| 台安县| 深泽县| 清涧县| 湘潭县| 林芝县| 项城市| 郴州市| 安顺市| 南郑县| 长垣县| 余庆县| 灵川县| 习水县| 元朗区| 通许县| 琼结县| 平定县| 南昌市| 陆川县| 沙洋县| 康马县| 怀柔区| 林西县| 青浦区| 三门县| 电白县| 华安县| 宝山区| 秦安县| 苗栗县| 宣化县| 荃湾区| 郴州市| 民丰县| 崇左市| 辉南县| 蓝山县|