2010-12-27 33 views
7

Tôi đã có ứng dụng Django phân phát trang web có phần tử HTML5. Có một tính năng "đáng kinh ngạc", biến yếu tố video thành không thể tìm kiếm được: video.seekable trả về đối tượng timeRanges với length=0, trong khi đó phải là length=1.Phần tử video HTML5 không thể tìm kiếm được khi sử dụng máy chủ phát triển Django

Điều này có nghĩa là tôi không thể chỉnh sửa video. JavaScript cũng không thể làm gì cả.

Vấn đề là khi tôi tải lên trang web có vấn đề, tĩnh - không có Django, chỉ cần HTML/JS/CSS đơn giản - đến trang web của tôi để kiểm tra, nó hoạt động tốt - length=1.

Tuy nhiên, nếu tôi cố gắng phân phối cùng một trang tĩnh trên máy chủ Django dev của tôi vẫn cho cùng một vấn đề.

I am using Django's static serving for dev/debug purposes - Bạn có biết bất kỳ điều gì gây ra điều này không hay làm cách nào để khắc phục sự cố?

Cảm ơn.

Trả lời

11

máy chủ dev Django lẽ không hỗ trợ dải HTTP byte, đó là những gì thường các trình duyệt sử dụng để thực hiện tìm kiếm .

Bất kỳ máy chủ web sản xuất nào, ví dụ: Apache, lighttpd, hoặc nginx, nên hỗ trợ các tiền phạt này. Nếu bạn có thể chạy toàn bộ ứng dụng Django của bạn, một trong những máy chủ này thì vấn đề sẽ biến mất.

Cách giải quyết là chỉ phân phát video từ máy chủ như sau: đặt một trong số chúng lên để phân phát tĩnh thư mục video trên máy của bạn trên một cổng khác với máy chủ dev của Django và sau đó trong môi trường dev của bạn URL <video src= để trỏ tới máy chủ web mới hoặc viết chế độ xem đặc biệt cho các video chuyển hướng đến máy chủ web mới.

+2

Điều đó đã làm điều đó. Cảm ơn nhiều! Đối với bất kỳ ai muốn biết, tôi đã chỉnh sửa ví dụ phân phối tĩnh ban đầu trong tài liệu của Django, trong ** urls.py ** thành: 'urlpatterns + = patterns ('django.views.generic.simple' (r '^ static/(? P . *) $ ',' Redirect_to ', {' url ': http: // my_url /% (đường dẫn) s'}), ' –

0

Tôi đã không chạy vào bất cứ điều gì như thế bản thân mình, nhưng tôi có thể đoán, rằng máy chủ phát triển Django không thể truyền một video "giống như vậy". Bạn có thể phải sử dụng middleware ETAG để chữa trị này.

Hãy nhìn vào câu hỏi này: How to stream an HttpResponse with Django

Các vấn đề liên quan