2017-06-15 12 views
1

私は作成しているDjangoサイトを持っていますが、一部のページにビデオを埋め込んでいます。これらの動画はモデルの一部ではありません。私は、ビューを使って再生するビデオファイルを特定し、そのファイルパスをテンプレートに渡すことができるようにしたいだけです。すべてのファイルはローカルにホストされています(少なくとも現在は少なくとも)。 Djangoで使用できますか?もしそうなら、どうしたらいいですか?Djangoサイトにビデオファイルを埋め込む

+1

あなたはhttps://github.com/jazzband/django-embed-video – nik

+1

あなたドンを見てみたいことがありますこれに対する賞金を提供する必要はありません。それは可能です。 – e4c5

答えて

2

あなたがこれを行うことができる2つの方法があります -

方法1: - あなたはどんな時にモデルを使用したくない場合は

、そのパラメータに基づいて、URLと表示映像を渡すパラメータは、

すべての動画をメディアディレクトリに保存していて、すべてが一意の名前(IDとして機能する)を使用しているとします。

your_app/urls.py -

from django.conf.urls import url 
from . import views 

urlpatterns = [ 
    url(r'^video/(?P<vid>\w+)/$',views.display_video) 
    # \w will allow alphanumeric characters or string 
] 

プロジェクトのsettings.pyでこれを追加 -

#Change this as per your liking 
MEDIA_URL = '/media/' 
MEDIA_ROOT = os.path.join(BASE_DIR, 'media') 

your_app/views.pyを -

from django.conf import settings 
from django.shortcuts import render 
from django.http import HttpResponse 
import os 

def display_video(request,vid=None): 
    if vid is None: 
     return HttpResponse("No Video") 

    #Finding the name of video file with extension, use this if you have different extension of the videos  
    video_name = "" 
    for fname in os.listdir(settings.MEDIA_ROOT): 
     if fnmatch.fnmatch(fname, vid+"*."): #using pattern to find the video file with given id and any extension 
      video_name = fname 

    ''' 
     If you have all the videos of same extension e.g. mp4, then instead of above code, you can just use - 

     video_name = vid+".mp4" 

    ''' 

    #getting full url - 
    video_url = settings.MEDIA_URL+video_name 

    return render(request, "video_template.html", {"url":video_url}) 

その後、あなたの中にテンプレートファイル、video_template.html、ビデオを表示する -

<video width="400" controls> 
    <source src="{{url}}" type="video/mp4"> 
    Your browser does not support HTML5 video. 
</video> 

注:パフォーマンス上の問題があります。os.listdir()を使用して、フォルダ内のすべてのファイルを反復処理します。代わりに、可能であれば、共通のファイル拡張子を使用するか、次の方法を使用してください(強くお勧めします)。

方法2:データベース内の動画IDとcorrespondigファイル名を保存する -

方法と使用同じsettings.py、urls.pyとvideo_template.html 1

your_app /モデル.py -

from django.db import models 
class videos(models.Model): 
    video_id = models.CharField(blank=False, max_length=32) 
    file_name = models.CharField(blank=False, max_length=500) 
    def __str__(self): 
     return self.id 

your_app/views.py -

あなただけのgoto、動画ID 97veqne0で任意のページにアクセスする場合

ので - localhost:8000/video/97veqne0

関連する問題