首页 > 解决方案 > 如何在 Javascript 中循环 Django 查询集

问题描述

如何在 javascript 中循环 Django 模型查询集。我有一个使用 javascript 的音乐播放器,并且 javascript 中的 'trackUrl' 变量列出了曲目路径,我需要能够遍历每个用户上传的曲目并将它们加载到每个用户的播放器中。我基本上需要从音乐模型中为每个用户获取曲目。

希望这是有道理的,这是我现在拥有的一些代码。

模型.py

class Music(models.Model):
    track = models.FileField(upload_to='path/to/audio')
    title = models.TextField(max_length=50)
    artwork = models.ImageField(upload_to='path/to/img', blank=True)
    artist = models.ForeignKey(User, on_delete=models.CASCADE)

    def __str__(self):
        return self.title

音乐.js

<script>
$(function()
{
    var playerTrack = $("#player-track"), bgArtwork = $('#bg-artwork'), bgArtworkUrl,
     albumName = $('#album-name'), trackName = $('#track-name'), albumArt = $('#album-art'),
      sArea = $('#s-area'), seekBar = $('#seek-bar'), trackTime = $('#track-time'), insTime = $('#ins-time'),
       sHover = $('#s-hover'), playPauseButton = $("#play-pause-button"),  i = playPauseButton.find('i'), 
       tProgress = $('#current-time'), tTime = $('#track-length'), seekT, seekLoc, seekBarPos, cM, ctMinutes, 
       ctSeconds, curMinutes, curSeconds, durMinutes, durSeconds, playProgress, bTime, nTime = 0, buffInterval = null, 
       tFlag = false, albums = ['Dawn','Me & You','Electro Boy','Home','Proxy (Original Mix)'], 
       trackNames = ['Skylike - Dawn','Alex Skrindo - Me & You','Kaaze - Electro Boy','Jordan Schor - Home','Martin Garrix - Proxy'], 
       albumArtworks = ['_1','_2','_3','_4','_5'], trackUrl = 
      ['https://raw.githubusercontent.com/music-player-1/master/music/2.mp3',
       'https://raw.githubusercontent.com/music-player-1/master/music/1.mp3',
       'https://raw.githubusercontent.com/music-player-1/master/music/3.mp3',
       'https://raw.githubusercontent.com/music-player-1/master/music/4.mp3',
       'https://raw.githubusercontent.com/music-player-1/master/music/5.mp3'], 
       playPreviousTrackButton = $('#play-previous'), playNextTrackButton = $('#play-next'), currIndex = -1;

    function playPause()
    {

标签: javascriptdjangodjango-modelsdjango-views

解决方案


Django REST 框架创建了一个 API,允许前端与您的模型进行交互。因此,在设置 django rest 框架之后,您可以使用 axios 之类的东西向 api 发出请求并获取您的模型数据。

或者,您可以在您的 views.py 中创建一个自定义视图函数,该函数获取您需要的模型数据,然后将其自定义为 JavaScript 的可用格式(例如 json 格式),然后返回该数据。然后在客户端,您只需使用 axios 向您刚刚创建的视图函数发出请求,它就会向您发送该 json 数据。


推荐阅读