将子流程lilypond呈现为Django模板

2024-05-19 02:53:11 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在尝试用lilypond生成音乐,并将其渲染到django模板。当我尝试在cmd中运行脚本时,会生成midi文件,但我无法将其渲染到django模板

这在cmd中运行良好,并生成可以播放的音乐文件-以及其他代码-:

视图.py

 -> lyout = subprocess.Popen(["lilypond", song_name])
 out, err = lyout.communicate()
 return render(request, "smcs/result.html", out)

这是我的html模板:

result.html页面

{% for song in out %}
<audio controls preload="auto" id="audio" autoplay="autoplay">
    <source src="../../{{ song }}" >
</audio>
{% endfor %}
  • 在结果页面中,我只看到文件名,但未显示播放器。当我删除{%for-end%}命令时,会显示播放器,但歌曲不会播放

url.py

urlpatterns = [......] + static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)

设置.py

MEDIA_ROOT=os.path.join(BASE_DIR,"songdir")
MEDIA_URL='/media/'
TEMPLATES = [
    {
        'BACKEND': 'django.template.backends.django.DjangoTemplates',
        'DIRS': [os.path.join(BASE_DIR, "templates")],
        'APP_DIRS': True,
        'OPTIONS': {
            'context_processors': [
                'django.template.context_processors.debug',
                'django.template.context_processors.request',
                'django.contrib.auth.context_processors.auth',
                "django.template.context_processors.media",
                'django.contrib.messages.context_processors.messages',
            ],
        },
    },
]

歌曲-url.py

urlpatterns = [

url(r'^$', page),
url(r'^result/$', lygen) ]

lygen是在views.py中定义的我的函数名

我做错了什么??:(


Tags: djangopycmd模板urlsonghtmlcontext

热门问题