简体   繁体   中英

How to pass parameters of Ajax URL in Django?

I used Ajax to add items to wishlist:

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

the url looks like:

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:

$(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 ?

$(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")

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

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