django + ajax发帖形成麻烦

时间:2015-10-21 17:54:44

标签: jquery ajax django

我用ajax创建“like button”。我的网址有问题。
当我点击时,我有404:网址: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
我在测试视图的顶部添加了一些打印功能,视图不起作用 我认为问题并不复杂,但我不明白我的网址有什么问题 也许你可以给我建议,我该如何测试这个问题

模型:

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:

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 个答案:

答案 0 :(得分:1)

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