關於python之ajax的信息

  • 1、Python 在ajax動態頁面如何操作?
  • 2、python和ajax和json
  • 3、請問python怎麼和ajax交互數據?
  • 4、Python語言 ajax提交內容 頁面免刷新
  • 5、ajax跨域問題(python版本)
  • 6、python語言基礎知識是什麼?

首先確定這個動態頁面的數據是用: 1、ajax類似的重新請求網絡獲取數據? 2、還是html中已經存在這些數據? 3、還是通過js讀取內存中的數據? 確定好這些,你才能知道如何下手。第一、二種方式是可以模擬的,如果是第三種,建議你放棄。

ajax是屬於template裡面的一個異步請求而已,如果你在views裡面傳回來是你說的“實體對像(models)”的話,我就有點搞不明白了。。。

不知道你在那個view方法直接return的是什麼?

如果使用json處理對象的話請使用:

from django.http import HttpResponse

from models import mymodels

import simplejson

def ajax(request):

a = mymodels.objects.all()[0]

”’

此處假設a中有name、age參數

model對象是不能直接作為json可以處理,必須先轉換為dict類型

”’

result = {}

result[‘name’] = a.name

result[‘age’] = a.age

result = simplejson.dumps(result)

return HttpResponse(result)

此時用ajax訪問這個試圖返回的內容就是:

{“name”:”Jim Green”,”age”:”14″}

上面這種辦法不是很好,建議先寫一個template模板專門來顯示此model內容。

假設模板ajax.html的內容為:

===================ajax.html===============

name: {{a.name}}br /

age: {{a.age}}

=======================================

views視圖如下:

from django.http import HttpResponse

from models import mymodels

from django.shortcuts import render_to_response

def ajax(request):

a = mymodels.objects.all()[0]

return render_to_response(“ajax.html”,{“a”:a})

此時用ajax訪問這個視圖返回的內容就是:

name: Jim Green

age: 14

以上的代碼可能會有錯誤,因為是隨手寫的,希望能夠幫到你

====修改了一下====

模板文件名打錯了。。。

修改了一下就到了樓上的下面了,樓上你也太沒水準了。直接複製

=====修改=====

使用model.__dict__屬性可以獲得字典,希望能幫到你

不一定需要django,你從網頁上request一個url,這個url運行一段python script,然後在response裡面返回一個json,在網頁上eval這個json就好了。

建議使用Jquery,這樣可以保證兼容性。

jquery的ajax很容易,看樣子你用的是get請求。

$.getJSON({

‘/group/action/’+{{object.id}}+’/6/?mem_id=’+{{mem.id}},

function(return_data){

if(return_data.success == true){

alert(return_data.data);

}

}

});

你也可以這樣:

$.ajax({

url: ‘/group/action/’+{{object.id}}+’/6/?mem_id=’+{{mem.id}},

//data: {mem_id: mem.id}, //data也可以寫到這裡的。

success: function(return_data){

if(return_data.success == true){

alert(return_data.data);

}

},

dataType: “json” //跨域的話用jsonp

});

jquery學起來比較簡單,入門後邊寫邊看手冊就OK了。

還有就是你說的Python ajax提交,ajax是在瀏覽器端,python要做的就是生成js裡面的鏈接。比如mem.id,object.id這些地方。

跨域問題來源於JavaScript的同源策略,即只有 協議+主機名+端口號 (如存在)相同,則允許相互訪問。即JavaScript只能訪問和操作自己域下的資源,不能訪問和操作其他域下的資源。

注意:localhost和127.0.0.1也屬於跨域。

如果Origin指定的源不在許可範圍內, 服務器會返回一個不帶有Access-Control-Allow-Origin字段的響應 . 瀏覽器解析時發現缺少了這個字段, 就會報錯.

修改Django中的views.py文件修改views.py中對應API的實現函數,給返回值加上響應頭Access-Control-Allow-Origin,允許其他域通過Ajax請求數據:

滿足以下兩個條件的請求。

(1) 請求方法是以下三種方法之一:

(2) HTTP的頭信息不超出以下幾種字段:

非簡單請求就是複雜請求。

非簡單請求的CORS請求,會在正式通信之前,增加一次HTTP查詢請求,稱為”預檢”請求(preflight)。

預檢請求為OPTIONS請求,用於向服務器請求權限信息的。

預檢請求被成功響應後,才會發出真實請求,攜帶真實數據。

JSONP是JSON with Padding的略稱。它是一個非官方的協議,它允許在服務器端集成Script tags返回至客戶端,通過javascript callback的形式實現跨域訪問(這僅僅是JSONP簡單的實現形式)。

JSONP的實現步驟大致如下(參考了來源中的文章)

請求時,接口地址是作為構建出的腳本標籤的src的,這樣,當腳本標籤構建出來時,最終的src是接口返回的內容

這時,只要瀏覽器定義了foo函數,該函數就會立即調用。作為參數的JSON數據被視為JavaScript對象,而不是字符串,因此避免了使用JSON.parse的步驟。

JSONP使用注意

基於JSONP的實現原理,所以JSONP只能是“GET”請求,不能進行較為複雜的POST和其它請求,所以遇到那種情況,就得參考下面的CORS解決跨域了(所以如今它也基本被淘汰了)。

前面講了JSONP的實現原理,現在我們可以自己寫JS來實現JSONP功能。

一般情況下,我們希望這個script標籤能夠動態的調用,而不是像固定在html裡面所以沒等頁面顯示就執行了,很不靈活。

我們可以通過頁面的觸發事件操作後,通過javascript動態的創建script標籤,這樣我們就可以靈活調用遠程服務。實例如下:

為了更加靈活,上述我們將你自己在客戶端定義的回調函數的函數名傳送給服務端,服務端則會返回以你定義的回調函數名的方法,將獲取的json數據傳入這個方法完成回調。

如上,jQuery框架也當然支持JSONP,可以使用 $.getJSON(url,[data],[callback]) 方法。

與js實現的方式相比,我們並不要自己生成一個script標籤,客戶端也並不需要自己定義一個回調函數.

上述這種方法,很方便,不需要我們自己定義回調函數和指定回調函數名,但是,如果說我們想指定自己的回調函數名,或者說服務上規定了固定回調函數名該怎麼辦呢?

我們可以使用$.ajax方法來實現。如下例:

在上小節中jsonp: ‘callbacks’就是定義一個存放回調函數的鍵,jsonpCallback是前端定義好的回調函數方法名,server端接受callback鍵對應值後就可以在其中填充數據打包返回。

但是,jsonpCallback參數可以不定義,jquery會自動定義一個隨機名發過去,那前端就得用回調函數來處理對應數據了。利用jQuery可以很方便的實現JSONP來進行跨域訪問。

如此,我們的跨域處理即完成,支持所有的請求。

如下:

一、Python語言基礎

Python核心:Python數據基本運算、語句、容器、函數

Python 面向對象編程:OOA、OOD、OOP、天龍八部技能系統框架 設計 Python高級:模塊、包、函數式編程、文件。

二、Python高級軟件開發技術

Linux操作系統 :Linux常用命令、編輯工具、vim/Pycharm

數據結構與算法 :鏈表、棧和隊列、樹和二叉樹、查找排序

IO網絡編程:文件操作、字節流讀寫、網絡協議、套接 字、TCP/UDP

並發編程:多進程、進程池、進程通信、多線程、線程鎖、多任務並發、IO模型、協程

Python 正則表達式:正則表達式、貪婪模和非貪婪模式、re模塊

MySQL基礎:數據庫應用、SQL語言、Mysql增刪改查、 pymysql模塊

三、Python Web全棧式工程師

HTML/CSS HTML5標籤,CSS選擇器,CSS樣式屬性以 及值

Java :JS流程控制,DOM,BOM,JQuery API

MySQL高級:MySQL索引、事務、引擎、優化、pymysql 模塊使用

Python Django 框架:Django、模板、視圖、模型、請求對象等

 Ajax Ajax,:JSON, Jquery對Ajax的支持, 跨域訪問

四、Python 爬蟲

Redis:Redis、string、hash、list、set、zset、 Python與MySQL和Redis結合

爬蟲、HTTP、BeautifulSoup,XPath,Scrapy其實無論是學習什麼知識,都要有一個對學習目標的清楚認識。 只有這樣才能朝着目標持續前進,少走彎路,從學習中得到不斷的提升,享受python學習計劃的過程。

原創文章,作者:簡單一點,如若轉載,請註明出處:https://www.506064.com/zh-hant/n/126996.html

(0)
打賞 微信掃一掃 微信掃一掃 支付寶掃一掃 支付寶掃一掃
簡單一點的頭像簡單一點
上一篇 2024-10-03 23:13
下一篇 2024-10-03 23:13

相關推薦

  • Python列表中負數的個數

    Python列表是一個有序的集合,可以存儲多個不同類型的元素。而負數是指小於0的整數。在Python列表中,我們想要找到負數的個數,可以通過以下幾個方面進行實現。 一、使用循環遍歷…

    編程 2025-04-29
  • Python計算陽曆日期對應周幾

    本文介紹如何通過Python計算任意陽曆日期對應周幾。 一、獲取日期 獲取日期可以通過Python內置的模塊datetime實現,示例代碼如下: from datetime imp…

    編程 2025-04-29
  • Python周杰倫代碼用法介紹

    本文將從多個方面對Python周杰倫代碼進行詳細的闡述。 一、代碼介紹 from urllib.request import urlopen from bs4 import Bea…

    編程 2025-04-29
  • 如何查看Anaconda中Python路徑

    對Anaconda中Python路徑即conda環境的查看進行詳細的闡述。 一、使用命令行查看 1、在Windows系統中,可以使用命令提示符(cmd)或者Anaconda Pro…

    編程 2025-04-29
  • Python中引入上一級目錄中函數

    Python中經常需要調用其他文件夾中的模塊或函數,其中一個常見的操作是引入上一級目錄中的函數。在此,我們將從多個角度詳細解釋如何在Python中引入上一級目錄的函數。 一、加入環…

    編程 2025-04-29
  • Python字典去重複工具

    使用Python語言編寫字典去重複工具,可幫助用戶快速去重複。 一、字典去重複工具的需求 在使用Python編寫程序時,我們經常需要處理數據文件,其中包含了大量的重複數據。為了方便…

    編程 2025-04-29
  • Python程序需要編譯才能執行

    Python 被廣泛應用於數據分析、人工智能、科學計算等領域,它的靈活性和簡單易學的性質使得越來越多的人喜歡使用 Python 進行編程。然而,在 Python 中程序執行的方式不…

    編程 2025-04-29
  • Python清華鏡像下載

    Python清華鏡像是一個高質量的Python開發資源鏡像站,提供了Python及其相關的開發工具、框架和文檔的下載服務。本文將從以下幾個方面對Python清華鏡像下載進行詳細的闡…

    編程 2025-04-29
  • python強行終止程序快捷鍵

    本文將從多個方面對python強行終止程序快捷鍵進行詳細闡述,並提供相應代碼示例。 一、Ctrl+C快捷鍵 Ctrl+C快捷鍵是在終端中經常用來強行終止運行的程序。當你在終端中運行…

    編程 2025-04-29
  • 蝴蝶優化算法Python版

    蝴蝶優化算法是一種基於仿生學的優化算法,模仿自然界中的蝴蝶進行搜索。它可以應用於多個領域的優化問題,包括數學優化、工程問題、機器學習等。本文將從多個方面對蝴蝶優化算法Python版…

    編程 2025-04-29

發表回復

登錄後才能評論