抱歉,如果我做的不对,我是 Web 应用程序开发的新手,我一直在使用 Django 开发一个项目,我希望我能做到以下几点:
当用户单击一个按钮时,会生成一个 Ajax 请求(我使用的是纯 Javascript)。
const csrftoken = document.querySelector('[name=csrfmiddlewaretoken]').value;
// Create new request add token
const generateRequest = new XMLHttpRequest();
generateRequest.open('POST', '/generate');
generateRequest.setRequestHeader('X-CSRFToken', csrftoken);
generateRequest.onload = () => {
// Get url with the midi file, see below
};
// Add the motif to send with the request
const data = new FormData();
data.append('motif', JSON.stringify(notes));
// Send request
此请求将一些音符发送到生成旋律的服务器(Django)。
# Generate the melody based on the seed
@require_http_methods(["POST"])
def generate(request):
# See if method was post
if request.method == "POST":
# Get the seed and other stuff...
# Create a melody generator
mg = MelodyGenerator()
melody = mg.generate_melody(encoded_seed, ...)
mg.save_melody(melody)
# Return the melody
return JsonResponse({"melody": melody}, status=200)
服务器将旋律保存在我想成为临时文件的 midi 文件中
class MelodyGenerator:
# ... do some stuff
def save_melody(...):
path_dir = os.path.join(settings.MEDIA_ROOT, "temp_midis")
file_path = os.path.join(path_dir, file_name)
midi = stream.write(format, file_path)
所以用户可以收听midi(html模板):
<midi-player
src = "url/path/to/temporaryfile"
sound-font visualizer = "#myVisualizer">
</midi-player>
<midi-visualizer type = "staff" id = "myVisualizer"> </midi-visualizer>
我希望这个文件是临时的,这样它就不会占用空间,也就是说,用户可以收听旋律,可以选择下载它等等,但是当他们离开页面时,文件被删除并且因而不占用更多空间。
我怎么知道这个文件的 url,我想是临时的?