首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何在django视图中使用jquery/ajax传递的值

如何在django视图中使用jquery/ajax传递的值
EN

Stack Overflow用户
提问于 2018-08-14 08:34:57
回答 1查看 88关注 0票数 1

如何检索和使用通过ajax传递给视图的数据?在这个例子中,我尝试实现一个像向上投票/向下投票系统这样的reddit

html/js:

代码语言:javascript
复制
{% for post in posts %}
    <h2>{{ post.title }}</h2>
    {{ post.upvotes }}<button data-id="{{post.id}}" data-vote="up" class="vote" type="submit">Upvote</button>
    {{ post.downvotes }}<button data-id="{{post.id}}" data-vote="down"  class="vote" id="downvote" type="submit">Downvote</button>
{% endfor %}

      <script>
          $(".vote").click(function () {
              var id = $(this).data("id"); //get data-id
              var vote_type = $(this).data("vote"); //get data-vote
          };
          $.ajax({
              url: '/ajax/upvote/',
              data: {
                  'id': id,
                  'vote_type':vote_type,
              }
          });
      </script>

urls.py:

代码语言:javascript
复制
url(r'^ajax/upvote/$', views.upvote, name='upvote'),

查看:

代码语言:javascript
复制
def upvote(request):
    #how do i use 'id' and 'vote_type' values here?
EN

回答 1

Stack Overflow用户

发布于 2018-08-14 08:59:59

您需要首先编辑您的javascript以发送csrf令牌,并在您的url.py中注册一个POST url。

代码语言:javascript
复制
{% for post in posts %}
    <h2>{{ post.title }}</h2>
    {{ post.upvotes }}<button data-id="{{post.id}}" data-vote="up" class="vote" type="submit">Upvote</button>
    {{ post.downvotes }}<button data-id="{{post.id}}" data-vote="down"  class="vote" id="downvote" type="submit">Downvote</button>
{% endfor %}

      <script>
          $(".vote").click(function () {
              var id = $(this).data("id"); //get data-id
              var vote_type = $(this).data("vote"); //get data-vote
          };
          $.ajax({
              url: '/ajax/upvote/',
              data: {
                  'id': id,
                  'vote_type':vote_type,
                  csrfmiddlewaretoken: '{{ csrf_token }}'
              }
          });
      </script>

现在,您可以按常规方式访问您在views.py中发送的数据:

代码语言:javascript
复制
def upvote(request):
    sentence= request.POST.get("id","")
    upvote = request.POST.get("upvote","") 
    #continue doing your stuffs here...

希望这能有所帮助。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51832237

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档