2013-09-30 16 views
9

Làm thế nào để tự động giám sát .py, .js và các tệp mã nguồn khác để khởi động lại ứng dụng Django (hoặc bất kỳ ứng dụng nào khác) và làm mới trình duyệt khi nguồn thay đổi? Điều này là có thể trong Rails sử dụng bảo vệ, trong các ứng dụng JS sử dụng grunt-contrib-watch và plugin trình duyệt tải gan đi kèm. Làm thế nào tôi có thể làm điều đó cho các ứng dụng web Python như Django?Làm thế nào để tự động tải lại Django khi các tập tin thay đổi?

tôi khởi động máy chủ Django của tôi với

foreman start 

đây là Procfile tôi:

web: newrelic-admin run-program gunicorn app.wsgi 

theo đề nghị của các/docs Newrelic Heroku hoặc thông thường

python manage.py runserver 

Các runserver phương pháp khởi động lại máy chủ trên các thay đổi nguồn .py, nhưng không phải trình duyệt và không xem ot các tệp của cô ấy - tôi có thể chạy bảo vệ bên cạnh nó, nhưng sau đó tôi có hai quy trình mà tôi phải chăm sóc, trong khi grunt hoặc rake cung cấp các giao diện hợp nhất. Tôi tự hỏi cách được khuyến nghị để làm điều này giữa các nhà phát triển Python là gì?

Tôi không thể tìm thấy bất kỳ tài liệu chi tiết, toàn diện nào về điều này - chỉ các cuộc thảo luận chưa hoàn chỉnh herethere.

+0

Để đạt được bình đẳng với gunicorn/runserver nạp lại, sử dụng cờ --reload trong Procfile của bạn. Tôi không có một câu trả lời tốt cho việc tải lại trình duyệt, thật không may. –

Trả lời

9

Bạn không cần tiện ích mở rộng của trình duyệt để hoàn thành tự động làm mới. Hãy xem https://github.com/tjwalch/django-livereload-server.

tôi đã đăng một câu trả lời bao quát hơn về vấn đề này tại https://stackoverflow.com/a/36961244/2950621

Nó hoạt động bằng cách sử dụng một lệnh manage.py (server) để giám sát .js của bạn và các tập tin tĩnh khác. Máy chủ gửi tín hiệu đến trình duyệt thông qua websockets. Có một số mã phía máy khách được tiêm trên mỗi trang. Mã được tiêm đáp ứng với tín hiệu và làm mới trình duyệt.

3

Sử dụng python manage.py runserver là cách sử dụng nhiều nhất. Bạn sẽ phải sử dụng một công cụ khác như: http://livejs.com/ để làm mới trình duyệt chính vì Django thực sự không biết về nó.

2

Thất vọng với tất cả các lần làm mới rõ ràng, tôi đã tạo tiện ích mở rộng cho trình duyệt, cho cả Firefox và Chrome, để tự động hóa việc này. Tiện ích mở rộng hoạt động với ứng dụng Django mà bạn thêm vào danh sách ứng dụng của mình trong INSTALLED_APPS. Bạn có thể tìm hiểu thêm tại số github repo.

Mặc dù repo có toàn bộ mã nguồn, các tiện ích cũng có sẵn trong cửa hàng trực tuyến tương ứng. Chỉ cần tìm kiếm 'Django Auto Refresh'. Với những điều này, bạn chỉ cần sao chép ứng dụng vào thư mục của dự án của chúng tôi và bao gồm nó qua INSTALLED_APPS. Tôi muốn thêm một kịch bản thiết lập pip, nhưng không tìm thấy thời gian để làm điều đó.

HTH. Xin lỗi nếu điều này nghe có vẻ như xúc tiến bản thân.

1

Cài đặt ứng dụng django này:

pip install django-livesync 

Mở thiết lập django bạn nộp thêm một cái gì đó như:

INSTALLED_APPS = (
    '...', 
    'livesync', 
    'django.contrib.staticfiles', 
    '...', 
) 

MIDDLEWARE_CLASSES = (
    'livesync.core.middleware.DjangoLiveSyncMiddleware', 
) 

Cẩn thận để đăng ký 'livesync' trước khi 'django.contrib.staticfiles' nếu bạn là sử dụng nó.

Bây giờ, chỉ cần khởi động máy chủ phát triển của bạn:

python manage.py runserver 

Kiểm tra này ra để biết thêm chi tiết: https://github.com/fabiogibson/django-livesync

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