简体   繁体   English

如何在Django中传递Ajax URL的参数?

[英]How to pass parameters of Ajax URL in Django?

I used Ajax to add items to wishlist:我使用 Ajax 将项目添加到愿望清单:

<a href="{% url 'listing:wishlist' list.slug %}" id="wishlistbtn" data-slug='{{ list.slug }}'>Add to
wishlist</a>

the url looks like: url 看起来像:

path('wishlist/<slug:title_slug>/', wishlist, name='wishlist'),

but I don't know how to pass list.slug or title_slug in above url using Ajax:但我不知道如何使用 Ajax 在 url 上方传递list.slugtitle_slug

$(document).on('click', '#wishlistbtn', function (e) {

    $.ajax({
        type: 'GET',
        url: "{% url 'listing:wishlist' %}",

        data: {
            title_slug: e.target.getAttribute('data-slug')
        },

        success: function (response) {
            alert('added to wishlist')
        }
    })
})

my above stated solution didn't work?我的上述解决方案不起作用? Please help me with this.请帮我解决一下这个。 Thank you.谢谢你。

edit: View added编辑:添加视图

def wishlist(request):
    slug = request.GET.get('title_slug')
    obj = get_object_or_404(Listing, slug=slug)
    profile = Profile.objects.all().filter(user=request.user).first()
    profile.wishlist.add(obj)

    return HttpResponse('true')

is this your solution to pass the data-slug ?这是您传递data-slug的解决方案吗?

$(document).on('click', '#wishlistbtn', function (e) {
            let el = $(this);
            $.ajax({
                type: 'GET',
                url: "{% url 'listing:wishlist' %}",
        
                data: {
                    title_slug: el.attr("data-slug"),
                },
        
                success: function (response) {
                    alert('added to wishlist')
                }
            })
        })

use this path -使用这条路径 -

path('wishlist', wishlist, name='wishlist'),

in your views to get slug use - request.GET.get("title_slug")在您的观点中使用 slug - request.GET.get("title_slug")

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM