国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 開發設計 > 正文

Django使用模板進行動態局部刷新

2019-11-14 17:36:49
字體:
來源:轉載
供稿:網友

想學習python,但是找不到方向,最近想突然對web編程感興趣了,所有一直在看,剛剛對著教程做了一點東西。

 

使用Django提交評論時,如果使用Form提交評論信息,那么提交成功后,最好是能把剛剛輸入的評論信息顯示出來;

所以提交評論信息后,最好能馬上將評論內容顯示出來。

當時考慮了3種方法:

1、最開始考慮使用Ajax+json,從服務器讀取最新的一條評論信息,當多個用戶同時提交評論的時候,這種辦法會出現不同步的現象,pass掉;

2、還是使用Ajax+json,客戶端傳遞當前頁面的評論數量,服務端將客戶端未顯示的評論全部返回,在ajax的回調函數中加載這些評論;

3、客戶端通過ajax向服務器取評論信息,服務器使用模板將評論內容全部渲染為html文本內容,并將內容返回到客戶端,客戶端將收到的HTML文本插入DIV中。

在方法1和2中,需要在JS代碼中解析JSON數據并根據JSON數據生成HTML內容,使用方法3可以使用模板統一處理;相對于處理JSON數據和渲染模板,方法3會加重服務器負擔。

 

下面是代碼:

評論的mudel

1 class BlogContent(models.Model):2     blog = models.ForeignKey(Blog)3     auth = models.CharField('昵稱', max_length=40)4     contents = models.TextField('內容',max_length=2000)5     time = models.TimeField(auto_now_add=True)6     date = models.DateField(auto_now_add=True)

客戶端Form表單

{# 下面是評論輸入區域 #}    <div id="blogComment">        <form id="user_content">            <div>昵稱 <input type="text" id="username" value="匿名"><p/></div>            <textarea id="content_value"></textarea><p/>            <input type="text" id="blog_id" value="{{ item.id }}" style="display:none;"/>            <input type="submit" id="content_submit" value="提交評論"/>        </form>    </div>

提交評論的JS代碼

 1  $(function() { 2         $("#user_content").submit(function(){ 3             var username = $("#username").val(); 4             var content_value = $("#content_value").val(); 5             var blog_id = $("#blog_id").val() 6             $(this).ajaxSubmit({ 7                 type:"post",  //提交方式 8                 dataType:"text", //數據類型 9                 url:"/content/", //請求url10                 data: {11                 'username': username,12                 'content_value': content_value,13                 'blog_id':blog_id14                 },15                 success:function(data){ //提交成功的回調函數16                     loadNewContents()17                     $("#content_value").val("");18                 }19             });20             return false; //不刷新頁面21         });22     });

從服務器讀取全部評論信息并進行顯示的JS代碼

 1  //加載最新的評論 2     function loadNewContents() 3     { 4         var lstContent = $("#lstContents"); 5         //lstContent.html(""); 6  7         var blog_id = $("#blog_id").val() 8         $(this).ajaxSubmit({ 9             type: "post",  //提交方式10             dataType: "text", //數據類型11             url: "/allcontent/", //請求url12             data: {13                 'blog_id': blog_id14             },15             success: function (data) { //提交成功的回調函數16                 if(data.length >0)17                 {18                      $("#lstContents").html(data);19 20                 }21             }22         });23     }

Django的模板

1 {% for item in list_contents %}2     <div class="content">3         <div class="content_info">#{{  forloop.counter }}樓 {{ item.auth }} 發表于 {{ item.date }} {{ item.time }}<p/></div>4         <div class="content_value">{{ item.contents }}</div>5         <div class="content_option"><a href="#">回復</a><a href="#">引用 </a></div>6     </div>7 {% endfor %}

Django的views

 1 @csrf_exempt 2 def get_blog_all_contents(request): 3     response = HttPResponse() 4     response['Content-Type'] = "text/json" 5     strId = request.POST.get("blog_id", '') 6     if strId: 7         try: 8             blog_id = int(strId) 9             item = Blog.objects.get(id=blog_id)10             list_contents = item.blogcontent_set.order_by('date', 'time')11             return render_to_response("blogContentList.html", locals())12         except Exception, e:13             print(e)14     return ""

 


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 迁西县| 桦川县| 高雄市| 库车县| 高清| 景谷| 嘉鱼县| 华池县| 九寨沟县| 乐清市| 东兰县| 荆州市| 黄陵县| 永川市| 贵州省| 青浦区| 准格尔旗| 武川县| 福贡县| 石台县| 子长县| 嘉鱼县| 海淀区| 石城县| 屏东市| 辉南县| 上饶市| 株洲县| 田阳县| 灌阳县| 从江县| 武山县| 伊通| 小金县| 玉山县| 洛隆县| 依兰县| 元氏县| 平乡县| 寿光市| 通许县|