【问题标题】:django + ajax post form troubledjango + ajax 发布表单问题
【发布时间】:2015-10-21 17:54:44
【问题描述】:

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

型号:

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",

      }); 
})

和短格式的网址:

项目/网址:

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'),]

【问题讨论】:

    标签: jquery ajax django


    【解决方案1】:

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

    【讨论】:

    • 谢谢!就这么简单。我将此代码添加到我的 base.html 模板的 &lt;script&gt; 标记中。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-05-14
    • 1970-01-01
    • 2015-11-04
    • 2013-01-10
    • 1970-01-01
    • 2015-11-11
    • 1970-01-01
    相关资源
    最近更新 更多