Django Ajax: установка url с двумя динамическими путями url (<str:'variable'>/<str:'other_variable'>/get/)
У меня есть шаблон Django ajax, который будет получать всех игроков из модели игроков:
<body>
<h1>List of Players:</h1>
<ul id="display-data">
</ul>
</body>
<script>
$(document).ready(function(){
setInterval(function(){
$.ajax({
type:"GET",
url: "{% url 'getPlayers' %}", # Here is where I think the problem is
success: function(response){
console.log(response);
},
error: function(response){
alert("An error occured")
}
});
},1000);
})
</script>
Однако мой файл urls.py для шаблона, для которого мне нужно запустить это, является динамическим url:
urlpatterns = [
path('<str:league_id>/<str:league_title>/draft/', draft, name='draft'),
path('<str:league_id>/<str:league_title>/getPlayers/', getPlayers, name="getPlayers"),
]
# Include url path is /league/
Проблема в том, что url, заданный в функции Ajax, не включает league_id
и league_title
. Кто-нибудь знает, как добавить эти параметры при задании пути url для функции Ajax? Или если это вообще проблема моей установки?
Вот мой views.py для draft и get:
def draft(request, league_id, league_title):
league = League.objects.get(id=league_id)
context = {'league': league}
return render(request, 'league/draft.html', context)
def getPlayers(request, league_id):
league = League.objects.get(id=league_id)
players = league.available_player.all()
return JsonResponse({'players': list(players.values())})
Вы можете добавить league_id
и league_title
динамически следующим образом:
$(document).ready(function(){
setInterval(function(){
const league_id = '1' //You need to get these from DOM
const league_title = 'foo bar'
$.ajax({
type:"GET",
url: `/${league_id}/${league_title}/getPlayers/`,
success: function(response){
console.log(response);
},
error: function(response){
alert("An error occurred")
}
});
},1000);
})