Python Nginx-如何在Django中的渲染页面上提供受保护的视频,而不是强制下载?
我需要一个由Django呈现的页面上的受保护视频文件。该文件是受保护的,但它不像我所期望的那样为html呈现的页面提供服务,比如netflix。相反,我得到的只是一堆乱七八糟的东西 我知道内部重定向是为文件服务的,因此它会这样显示,但我需要它与netflix一样在呈现页面上显示其他html。。。。我做错了什么 Nginx conf文件: 网址: 视图: 模板,但它不呈现html,仅呈现上面的图像:Python Nginx-如何在Django中的渲染页面上提供受保护的视频,而不是强制下载?,python,django,nginx,django-views,nginx-location,Python,Django,Nginx,Django Views,Nginx Location,我需要一个由Django呈现的页面上的受保护视频文件。该文件是受保护的,但它不像我所期望的那样为html呈现的页面提供服务,比如netflix。相反,我得到的只是一堆乱七八糟的东西 我知道内部重定向是为文件服务的,因此它会这样显示,但我需要它与netflix一样在呈现页面上显示其他html。。。。我做错了什么 Nginx conf文件: 网址: 视图: 模板,但它不呈现html,仅呈现上面的图像: 您正在组合两个请求/响应:呈现页面和发送视频 您需要呈现模板,在模板中为视频提供一个调用Djang
您正在组合两个请求/响应:呈现页面和发送视频 您需要呈现模板,在模板中为视频提供一个调用Django视图的URL。然后,第二个视图返回一个带有秘密URL的响应作为accel重定向。因此:
path('protected_video/', views.protected_video, name='protected_video'),
path('video_url/<slug: video_slug>/', views.redirect_to_video, name='redirect_to_video'),
...
def protected_video(request):
....
if request.method =='POST':
if some_var == 'the_correct_value':
protected_uri = reverse('redirect_to_video' , kwargs={'video_slug': 'some_slug'})
return render(request, 'template.html', {'some_var ': True, 'protected_uri': protected_uri})
def redirect_to_video(request, slug):
... some logic to get the secret URL from the slug ...
response = HttpResponse()
response['X-Accel-Redirect'] = secret_url
return response
糟糕!ᕙ༼ຈل͜ຈ༽ᕗ 谢谢
path('protected_video/', views.protected_video, name='protected_video'),
def protected_video(request):
....
if request.method =='POST':
if some_var == 'the_correct_value':
protected_uri = '/secret_videos/secret-vid-1.mp4'
response = render(request, 'template.html', {'some_var ': True, 'protected_uri': protected_uri})
response['X-Accel-Redirect'] = protected_uri
return response
return render(request, 'template.html', {})
<video width="75%" height="auto" controls>
<source src="{{ protected_uri }}" type="video/mp4" />
Your browser doesn't support the mp4 video format.
</video>
path('protected_video/', views.protected_video, name='protected_video'),
path('video_url/<slug: video_slug>/', views.redirect_to_video, name='redirect_to_video'),
...
def protected_video(request):
....
if request.method =='POST':
if some_var == 'the_correct_value':
protected_uri = reverse('redirect_to_video' , kwargs={'video_slug': 'some_slug'})
return render(request, 'template.html', {'some_var ': True, 'protected_uri': protected_uri})
def redirect_to_video(request, slug):
... some logic to get the secret URL from the slug ...
response = HttpResponse()
response['X-Accel-Redirect'] = secret_url
return response