- 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-hk/n/126996.html