2014-10-19 12 views
0

在Django中,我有一個按鈕 「選擇」,如下所示:Django的jQuery的按鈕 「選擇一個帖子」

<button class="click" id ="click" data-id="{{ Post.id }}" class="btn btn-mini btn-primary" type="button">Pick</button> 

這個HTML裏面for循環顯示帖子:

{% for Post in latest_posts %} 

{{Post.id }} 
{{Post.author}} 
{{Post.title}} 
//button comes here. 

{% endfor %} 

我jQuery代碼是:

$(document).ready(function() { 
$('#click').click(function(){ 
    console.log("create post is working!") 
    var pickid; 
    pickid = $(this).attr("data-id"); 
    $.post('create_date/', {pickid: pickid}, function(data){ 
     alert('Button click recorded.') 
     });  
}) 
    }); 

和我的觀點:

def record_button_click(request, *args, **kwargs): 

if request.is_ajax() and request.method == 'POST': 
    id = request.POST.get('pickid') 
    response_data = {} 
    form=Pick(post=id,user=request.user) 
    response_data = {} 
    form.save() 

    response_data['result'] = 'Create post successful!' 

    return HttpResponse(
     json.dumps(response_data), 
     content_type="application/json" 
    ) 
else: 
    return HttpResponse(
     json.dumps({"nothing to see": "this isn't happening"}), 
     content_type="application/json" 
    ) 

有了這個代碼,我們的想法是將信息保存到挑表當用戶點擊按鈕「選擇」:

class Pick(models.Model): 
    user=models.ForeignKey(User) 
    post=models.ForeignKey(Post) 
    pick_date = models.DateTimeField('date picked',default=datetime.datetime.now()) 

什麼我錯在這裏做什麼?

在此先感謝

+0

很難說,因爲你沒有說出發生了什麼。但有一個問題是,你不能有多個具有相同ID的HTML元素。放下id並將jQuery監聽器綁定到類上,即'.click'。 – 2014-10-19 15:43:17

+0

謝謝@DanielRoseman,這解決了一個問題!我仍然在控制檯得到這個錯誤:'POST http://127.0.0.1:8000/post/create_date/ 500(INTERNAL SERVER ERROR)''XHR完成加載:POST「http://127.0.0.1:8000/post/create_date /「'我沒有儲存在DB中 – Tim 2014-10-19 16:21:57

+0

你應該看看你的瀏覽器的開發工具,網絡標籤應該顯示你後端發送的實際錯誤信息。 – 2014-10-19 17:08:25

回答

0

這裏是要素錯在我的代碼:

  • @DanielRoseman:刪除該ID和綁定的類jQuery的聽衆。
  • 在Jquery的代碼
  • :添加{pickid: pickid},$.post方法
  • 在視圖代碼更改以下行:form=Pick(post_id=id,user=request.user)
0

您不添加用於POST一個{% csrf_token %}。要麼這樣做,要麼在查看文檔here中有@csrf_exempt。希望有所幫助。