单击模板中的按钮后如何运行Django视图功能 - javascript

我制作了一个网页,该网页根据用户在通过api的POST请求中提交的参数,显示音乐会数据的查询结果。 Web应用程序的用户需要能够将音乐会添加到他们的音乐会列表中,或向其他用户发送音乐会邀请。这将需要将每个音乐会的信息发送回服务器,在服务器中可以将其存储在用户模型中。

在结果列表的每个列表元素中,我都有两个按钮,单击这些按钮时,将使用ajax调用将POST请求以及音乐会信息发送到服务器。目前,我只有这两个功能的外壳,因为我还不清楚如何发送当前列表项的数据,然后在视图中启动相应的功能。这是我目前在客户端拥有的内容:

var venues = {{venues|safe}};
var dates = {{raw_dts|safe}};
var ticket_statuses = {{ticket_statuses|safe}};
var ticket_urls = {{ticket_urls|safe}};
console.log("length of artist list" + venues.length);
var $list = $("<ul  class='list-group'>");
for(var i = 0; i < venues.length; i++){

    $list.append("<li class='list-group-item'>Artist: {{form_artistSelect}}  Location: " + venues[i].city + ', ' + venues[i].region +' Venue: ' + venues[i].name + 
       "Date: " + dates[i] + "tickets status: " + ticket_statuses[i] + "<br><a href = '" + ticket_urls[i] +"'" + "> ticket link</a> " + "<button id ='invite'type='button' class='btn btn-primary-outline'>Invite a friend</button>  <button id = 'save' type='button' class='btn btn-primary-outline'> Save concert</button> </li>"); 
}
// var $resultObj = $('<div id = "inviteObj" style="margin:100px"></div>');
// $resultObj.append($divline);
$list.appendTo($("#container"));
$("#save").click(function() {
    $.ajax({
        url: your_url,
        method: 'POST',
        data: {
            name: value,
            click: True
        }
        success:function(data){
        }
    });
});

$("#invite").click(function() {
    $.ajax({
        url: your_url,
        method: 'POST',
        data: {
            name: value,
            click: True
        }
        success:function(data){

        }
    });
});  

在views.py内部,我有一个view函数,该函数根据从表单请求获取的用户输入来处理获取JSON响应并将其传递给客户端。这是视图:

def search(request):
    form = SearchForm(request.POST or None)
    if form.is_valid():
        form_artistSelect = urllib2.quote(form.cleaned_data.get("artist_select"))
        form_city =   urllib2.quote(form.cleaned_data.get("city"))
        form_state = urllib2.quote(form.cleaned_data.get("state"))
        mile_radius = urllib2.quote(form.cleaned_data.get("radius"))
        #print "testing"
        url = "http://api.bandsintown.com/events/search?artists[]=" + form_artistSelect + "&location=" +form_city+","+ form_state+"&radius="+ mile_radius + "&format=json&app_id=YOUR_APP_ID"
        data = json.load(urllib2.urlopen(url))

        #titles = [ i.get("title") for i in data]
        raw_dts = json.dumps([i.get("datetime") for i in data])

        #formatted_dts = [i.get("formatted_datetime") for i in data]
        ticket_urls = json.dumps([i.get("ticket_url").encode("utf-8") for i in data])
        ticket_statuses = json.dumps([i.get("ticket_status").encode("utf-8") for i in data])
        venues = json.dumps([i["venue"] for i in data])
    context = {
            "form" : form,
            "form_artistSelect" : form_artistSelect,
            "raw_dts" : raw_dts,
            "ticket_urls" : ticket_urls,
            "ticket_statuses" : ticket_statuses,
            "venues" : venues,
        }
    else:
        context = {
            "form" : form   

        }
    return render(request,"searchform.html" , context)

所以具体来说,我有几个问题

由于此视图是页面的唯一视图,因此是否应该为每个按钮单击事件添加其他视图功能?另外,将每个音乐会列表项的数据发送到服务器端可以为每个用户保存的python的正确方法是正确的吗?

参考方案

我要添加两个视图

邀请函
save_concert

每次单击时,都使用该视图的正确URL,如果不需要返回任何答案,则该视图可以返回空的HttpResponse。
对于参数,有时我喜欢将所需的参数添加到项目的HTML中,例如

data-concert-id=venues[i].id

但是也许您的列表项中已经有所有必需的数据。无论如何,您都可以检索它们并在ajax调用的数据对象中轻松使用它们,例如:

{concert-id : $(this).attr('data-concert-id')

在JavaScript函数中转义引号 - javascript

我正在尝试将变量传递给javascript函数。根据用户的选择,它可以是文本或图像。这里已经讨论了类似的问题,但我无法解决。在php中,我这样编码:if ($choice == 1) { $img = '<img src = "../folder/'.$_SESSION["img"].'�…

如何在没有for循环的情况下在Javascript中使用Django模板标签 - javascript

我想在JavaScript中使用模板变量:我的问题是在javascript代码中使用for循环,for循环之间的所有事情都会重复..但我不想要....下面粘贴了我的代码..有人可以告诉我更好的方法吗这..因为这看起来很丑..这是我的代码: {% block extra_javascript %} <script src="/static/js…

使用JS和PHP更改弹出窗口背景图像 - javascript

我有一个JS函数:function zoom(now) { document.getElementById("popup").style.display = "block"; document.getElementById("photos").style.backgroundImage = …

打印二维阵列 - javascript

我正在尝试打印子元素。在this example之后。怎么做?。$myarray = array("DO"=>array('IDEAS','BRANDS','CREATIVE','CAMPAIGNS'), "JOCKEY"=>a…

Javascript-从当前网址中删除查询字符串 - javascript

单击提交按钮后,我需要从网址中删除查询字符串值。我可以用jQuery做到这一点吗?当前网址:siteUrl/page.php?key=value 页面提交后:siteUrl/page.php 实际上,我已经从另一个带有查询字符串的页面着陆到当前页面。我需要在页面首次加载时查询字符串值以预填充一些详细信息。但是,一旦我提交了表格,我就需要删除查询字符串值。我已…