2015-10-21 57 views
0

我用ajax创建“like button”。我有问题的网址。
当我点击,我有404:URL:http://127.0.0.1:8000/questions/get/1/%7B%%20url%20'add_like'%20 %% 7D
我不知道这段代码有什么问题。
服务器控制台响应此:POST/questions/get/1 /%7B %% 20url%20'add_like'%20 %% 7D HTTP/1.1“404 3710
我添加了一些打印功能,测试,查看不起作用
我认为问题并不复杂,但我看不出有什么错我的网址
也许你可以给我建议,我该如何测试这个问题django + ajax post form trouble

型号:

class Answer(models.Model): 

    text = models.TextField() 
    date = models.DateTimeField(default=datetime.datetime.now) 
    author = models.ForeignKey(CustomUser) 
    question = models.ForeignKey(Question) 
    like = models.PositiveIntegerField(default=0) 

查看:

def add_like(request): 

    if request.POST: 
     answer_pk = request.POST.get('answer_pk') 
     new_like = Answer.objects.get(pk=answer_pk) 
     new_like.like += 1 
     new_like.save() 

    return HttpResponse() 

HTML中简称:

{% for answer in answers %} 
<input type="button" name="{{ answer.pk }}" value="Like" class="addLike" /> 
    {% endfor %} 

AJAX:

$('.addLike').click(function(){ 

    $.ajax({ 
      type: "POST", 
      url: "{% url 'add_like' %}", 
      data: {'answer_pk': $(this).attr('name'), 'csrfmiddlewaretoken': '{{ csrf_token }}'}, 
      dataType: "json", 

     }); 
}) 

和短格式的URL:

项目/ URL:

urlpatterns = [ 
url(r'^admin/', include(admin.site.urls)), 
url(r'^questions/', include('apps.questions.urls')),] 

应用程序/问题/网址

urlpatterns = [ 
url(r'get/(?P<question_pk>[0-9]+)/$', views.get_question, name='get_question'),  
url(r'add_answer/(?P<question_pk>[0-9]+)/$', views.add_answer, name='add_answer'), 
url(r'add_like/$', views.add_like, name='add_like'),] 

回答

1

是你的ajax包含在Django模板中还是它在一个单独的文件中?它看起来像你的ajax代码中的URL标记{%url'add_like'%}没有被Django转换为实际的URL。 Django标签只有在模板中才有效。假设这是个问题,你可以将ajax代码放在模板内的HTML脚本标签内,这样Django就可以转换URL。