【发布时间】:2020-07-17 10:02:45
【问题描述】:
我有一个包含数据库中每个客户端的表的页面。我正在尝试这样做,以便在单击表中的客户端时,它只会将该客户端的数据传递到下一页。
我试图通过在我的 urls.py 中创建一个动态 url 来实现这一点,如下所示:
path("/client/<int:id>", client_view)
在 views.py 中,客户端视图使用该参数在数据库中搜索具有该 ID 的客户端,并生成一个包含该客户端名称、客户端照片位置等的 json 响应,如下所示:
def client_view(request, ID, *args, **kwargs):
obj = Client.objects.get(id=ID)
data = {
"response": [obj.id, obj.first_name, obj.last_name, obj.id, obj.getImgUrl()]
}
return JsonResponse(data)
但是这个 url 是在初始客户端表页面上的脚本中生成的,所以我很困惑如何将此参数传递给将打开动态 url 以呈现它的页面?
客户端表格页面上的脚本:
<script>
const clientElement = document.getElementById("client") /*table body*/
const xhr = new XMLHttpRequest()
const method = 'GET' //http get method
const url = "/rosterlist/" /*trailing slash important!!*/
const responseType = "json"
xhr.responseType = responseType
xhr.open(method, url) /* open request with specified method at url */
xhr.onload = function(){ /*upon loading execute this function */
const serverResponse = xhr.response
const clients = serverResponse.response
var clientsList = "";
var i;
for(i=0;i<clients.length;i++){
console.log(clients[i])
var client = "<tr class='"+clients[i].ID+"'><td><a href ='/client_view/"+clients[i].ID+"'><img src="+"'"+clients[i].image+"' alt='Man'/><a/></td><td>"+clients[i].lastname+"</td><td>"+clients[i].firstname+"</td><td>"+clients[i].ID+"</td></tr>"
clientsList+=client;
}
clientElement.innerHTML = clientsList /* replace table body */
console.log(clients)
}
xhr.send() /*triggers request */
</script>
如何在另一个页面上使用 xhr.open() 打开 url(脚本中的 href)?还是我应该尝试以另一种方式做到这一点?
【问题讨论】:
-
我不确定您的系统是如何工作的。但是正如你在这里所说,
as how to pass this parameter to the page that will open the dynamic url to render it?你不能将客户端 ID 传递给该脚本所服务的页面,即调用以生成此初始客户端表的视图吗? -
我有一个包含客户端表的初始页面,它使用上面的脚本。它为每个客户端创建一个不同的链接(“client_view/this client's id”)。我的问题是,当每个客户的网址不同时,如何加载此网址?我的目标是让附加到每一行的超链接将该客户端的数据加载到另一个页面上。
-
看看我的回答,如果有帮助请告诉我
标签: javascript python django django-views xmlhttprequest