为什么我的表单网址会为所有帖子传递相同的主键?

伊夫林·钦(Evelyn Chin)

我有一个HTML模板,可以逐一列出帖子,由于某种原因,

模板:

{% for post in posts %}
...
<form class='bookmark-form' method='POST' action="{% url 'add_bookmark' post.pk %}" 
          data-url='{{ request.build_absolute_uri|safe }}'> {% csrf_token %}
      <input type="text" value="{{post.pk}}" class="post-pk" hidden>
      <button type='submit'><img src="/img/bookmark.svg" alt=""></button>
</form>
...
{% endfor %}

Javascript:

  $('.bookmark-form').submit(function(event){
      event.preventDefault() 
      var $formData = $('.post-pk').val()
      var postData = {csrfmiddlewaretoken:$('input[name=csrfmiddlewaretoken]').val(), 'post-pk': $formData}
      var $thisURL = $('.bookmark-form').attr('data-url') || window.location.href 
      var form_action =  $('.bookmark-form').attr('action')
      console.log($formData)
      $.ajax({
          method: "POST",
          url: form_action,
          data: postData,
          success: function (data) {console.log(data)},
          error: function(data) {console.log("Something went wrong!");}
      })
      return false;
  })

Views.py添加书签功能

def add_bookmark(request, pk):
    if request.method=='POST' and request.is_ajax():
        post = Post.objects.get(pk=pk)
        print(pk)
        user = request.user 
        user.bookmarks.add(post)
        user.save()
        print(user.bookmarks.all())
        return JsonResponse({'result': 'ok'})
    else:
        return JsonResponse({'result': 'nok'})

HTML呈现页面: HTML呈现页面

无论我单击哪个书签按钮,我总是在终端和控制台日志中获得相同的输出。

终奌站:

10
<QuerySet [<Post: Hogwarts, a History>, <Post: The Truth: My Parents are Dentists>, <Post: How to Organize Money: An Easy 10000 Steps>, <Post: Reallllllllly Old Post>, <Post: My First Serious Post>]>

控制台日志:

10
{'result': "ok"}

其中10是“我的第一个严肃的帖子”帖子的主键。我似乎找不到找到除10之外的任何其他主键的原因。

文斯

您的问题是您选择的表单数据不在提交表单的范围内;

尝试这个:

var $formData = $(this).val()

您将必须像这样改变所有的姿势

编辑:解释,当您按类选择时,jQuery获取与您提供的类匹配的第一个元素的值。这就是为什么您始终获得相同数据的原因,它采用了第一个数据。

当您要查找由事件触发的值时,使用this关键字很有用,因为这将维护事件的范围。您可以使用$(this).find('.eg')$(this).closest('.eg')访问变量

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

来自分类Java

我为什么我的帖子API中获得了“列不能为空”的错误,当我从HTML表单传递值

来自分类Dev

为什么在Sails 1.0.0中禁止所有JSON帖子?

来自分类Dev

为什么我所有的bootstrap 4表单输入都变得很大?

来自分类Dev

为什么我的Python脚本将Postgres表的所有行设置为相同的值?

来自分类Dev

为什么我需要在所有传递闭包中使用ConfigureAwait(false)?

来自分类Dev

为什么json-schema-faker会为所有内容返回拉丁语?

来自分类Dev

为什么React不会为表单列出onReset事件?

来自分类Dev

Laravel 5.4:当我有3个使用相同网址的帖子页面时,如何重定向回正确的页面?

来自分类Python

无法用尽我的抓取器中使用的所有相同网址的内容

来自分类Dev

为什么所有对象都填充相同的坐标?

来自分类Dev

为什么我们需要主键?

来自分类Dev

为什么我的Ajax帖子被截断了?

来自分类Dev

为什么即使指定了所有值,Spark SQL为何也会为字符串列启用可空值?

来自分类Dev

为什么在所有者表单本身之后销毁了拥有的表单?

来自分类Dev

Bootstrap 4,为什么我的div具有相同的高度?

来自分类Dev

为什么我没有得到相同的结果?

来自分类Dev

如果所有使用者以相同的方式使用相同的API,为什么我们要为每个使用者提供1个Pact文件?

来自分类Dev

为什么我的道具没有传递给子组件?

来自分类Dev

为什么我的参数没有传递到函数中?

来自分类Dev

帖子的后续内容:“ ...为什么没有“正当化”和“自我化”属性?”

来自分类Dev

帖子提交后,为什么我的页面没有重定向?

来自分类Dev

为什么烧瓶会占用我的所有内存?

来自分类Dev

为什么不对我的所有列表运行此循环?

来自分类Dev

为什么SaveChangesAsync不真正保存我的所有更改?

来自分类Dev

为什么我的所有页面数据都显示StaleElementReferenceException

来自分类Dev

为什么我的while循环未将所有值求和

来自分类Dev

为什么我似乎无法将变量从控制器传递给symfony 4中的表单?

来自分类Dev

为什么我无法获得HTML表单将值传递给PHP?

来自分类Dev

如何避免所有页面中的相同帖子

TOP 榜单

热门标签

归档