我正在使用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?
答案 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>