Django使用ajax加载模型数据库值

时间:2015-08-03 05:27:02

标签: jquery python ajax django

我正在使用django框架开展一个侧面项目。当用户点击<div>区域而不刷新页面时,我需要将页面指向另一个网站。我四处搜索,发现ajax应该是我的选择。我在stackoverflow上关注了一些问题,但它没有用。我想要做的是:用户点击div区域,

<div onclick=window.open("{{link}}");> 

link是来自django / views的变量;然后在不刷新页面的情况下,如果用户再次点击该页面,它将指向另一个链接。链接从数据库生成,并在每次单击后随机选择。

我的模板使用jQuery / ajax:

$(document).ready(function(){
            $("#myDiv").on("click",function(){
            $.ajax({
                url:"http://127.0.0.1:8000/"
                success:function(){
                    window.open({{link}});
            }
        }
        }
    }

views.py

def index(request):
    modellinks=model_link.objects.values_list('links',flat=True)

    link=random.choice(modellinks)


    return render(request,'myapp/index.html',{'link':link})

添加问题......     问题是,当我使用上面的模板和views.py时,通过单击div区域,它不会链接到任何网站。但是如果不使用ajax,我可以使用div onclick事件将div区域链接到其他网站。 我想在使用ajax时,模板或views.py中的上述ajax可能有问题。

我的模板写得对吗?如何修改views.py以连接views.py和ajax?

1 个答案:

答案 0 :(得分:0)

你可能想尝试这些方面的东西:

<强> views.py:

from django.http import JsonResponse

def index(request):
    modellinks = model_link.objects.values_list('links', flat=True)
    link = random.choice(modellinks)

    data = {
       'link': link
    }
    return JsonResponse(data)

<强> AJAX:

$(document).ready(function(){
    $("#myDiv").click(function(e){
        e.preventDefault();
        $.ajax({
            url: "http://127.0.0.1:8000/",
            data: {
                csrfmiddlewaretoken: "{{ csrf_token }}",
            },
            dataType: "json",
            success: function(data){
                window.open(data.link)
            },
            error: function (rs, e) {
                alert('Sorry, try again.');
            }
        });
    });
});

<强> HTML:

<button id="myDiv" type=submit>Open Link</button>