python2.7+django1.2+sae部落格評論的ajax非同步提交

來源:互聯網
上載者:User

在開發部落格系統或者是電商系統,總之,凡是帶有回複、評論、回帖之類針對一個內容進行回複的功能的時候,現在幾乎全部都是採用ajax非同步提交,並且同步在正確的位置顯示提交結果,而不是在提交之後重新重新整理整個頁面來顯示提交之後的內容。

ajax由於google的使用,被廣為推廣。它在用戶端使用javascript語言編寫,使用XMLHttpRequest對象,實現和服務的資料互動,詳細資料參看:AJAX - XMLHttpRequest 對象。

ajax提交或者擷取資料,常用資料形式包括:

普通文本,自己定義規則,自己解析,無成熟類庫,需要自己編寫。

xml文本,使用xml解析器解析,有成熟類庫。

json文本,流行的資料形式,以體積小、靈活而著稱,有成熟類庫。

ajax有幾個好處:

防止頁面重新整理,因為提交的只是一部分內容,頁面大部分內容沒有發生改變,如果還是重新整理進而重新擷取全部的話,對於伺服器和用戶端都是一種負擔。而且頁面重新整理還會產生其他問題,諸如重複提交之類的。

減輕伺服器負擔,可以為更多人提供服務。

也有一些缺點:

給編程和調試帶來一些小麻煩,不夠使用習慣了,還是有一些方法和竅門的。

由於是ajax,所以頁面地址沒有變化,所以如果想分享地址的話,難以實現。需要做額外的工作,例如把地址列印出來,讓使用者複製分享。

使用者不容易知道自己的提交進行中,因為頁面沒有重新整理,使用者可能會重新點擊提交按鈕。這也可以解決,提交過程給出明顯提示,然後灰掉提交按鈕,或者做一些防止重複提交的工作。

今天的例子是部落格評論的非同步提交,環境是python2.7+django1.2+SAE。

下面是背景處理代碼,view中的代碼

@csrf_exempt              def comment_new(request,blog_id):     blog=get_object_or_404(Blog,pk=blog_id)              #str(request.raw_post_data)     if request.method=="POST" and request.is_ajax():         title=request.POST['comment_title']         name=request.POST['comment_author_name']         email=request.POST['comment_author_email']         url=request.POST['comment_author_url']         content=request.POST['comment_content']         comment=Comment(title=title,author_name=name,author_email=email,author_url=url,content=content);         comment.blog=blog         comment=comment.save()              _dict={}         _dict["title"]=title         _dict["author_name"]=name         _dict["author_email"]=email         _dict["author_url"]=url         _dict["content"]=content           _dict["created_at"]=unicode(datetime.datetime.now())                       return HttpResponse(simplejson.JSONEncoder().encode(str(_dict)))           def obj2dict(obj):     """     summary:         將object轉換成dict類型         """    memberlist = [m for m in dir(obj)]     _dict = {}     for m in memberlist:         if m[0] != "_" and not callable(m):             _dict[m] = getattr(obj,m)          return _dict

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.