2008-10-16 28 views
6

Cách tốt nhất để chuyển trang web Drupal hiện có sang ứng dụng Django là gì? Tôi có khoảng 500 trang (chủ yếu là sách mô-đun) và khoảng 50 bài đăng trên blog. Tôi không sử dụng bất kỳ mô-đun bên thứ ba nào. Tôi muốn giữ URL hiện tại (cho mục đích SEO) và di chuyển cơ sở dữ liệu sang Django. Tôi sẽ tạo một ứng dụng blog đơn giản, vì vậy việc di chuyển các bài đăng trên blog sẽ ổn. Điều gì sẽ là cách tốt nhất để phục vụ hơn 500 trang với Django? Tôi muốn sử dụng Quản trị viên để chỉnh sửa/thêm trang mới.Làm thế nào để chuyển từ Drupal sang Django?

+0

Xem http://stackoverflow.com/questions/199556/how-can-i-port-a-legacy-javaj2ee-website-to-a-modern-scripting-language-phppyth –

+0

Cảm ơn bạn, tôi đã bỏ lỡ điều đó – Boolean

Trả lời

12

Tất cả sự phát triển của Django đều tương tự nhau và thiết bị của bạn sẽ phù hợp với mẫu.

  1. Xác định mô hình Django cho sách và bài đăng blog của bạn.

  2. Đơn vị kiểm tra mô hình đó bằng cách sử dụng khả năng kiểm tra được tích hợp sẵn của Django.

  3. Viết một số tiện ích nhỏ để tải dữ liệu cũ của bạn vào Django. Tại thời điểm này, bạn sẽ nhận ra rằng mô hình Django của bạn không hoàn hảo. Tốt. Sửa nó. Sửa các bài kiểm tra. Làm lại tải.

  4. Định cấu hình giao diện quản trị mặc định cho mô hình của bạn. Tại thời điểm này, bạn sẽ dành thời gian tinh chỉnh giao diện quản trị. Bạn sẽ nhận ra mô hình dữ liệu của mình sai. Đó là một điều tốt. Sửa mô hình của bạn. Sửa các bài kiểm tra của bạn. Sửa tải của bạn.

  5. Bây giờ dữ liệu của bạn là chính xác, bạn có thể tạo mẫu từ các trang kế thừa của mình.

  6. Tạo ánh xạ URL và chức năng xem để điền các mẫu từ mô hình dữ liệu.

Dành thời gian lấy mô hình dữ liệu đúng. Nó thực sự quan trọng, bởi vì mọi thứ khác rất đơn giản nếu mô hình dữ liệu của bạn là rắn.

+0

Cảm ơn, tôi có một hình ảnh tốt hơn trong tâm trí của tôi bây giờ. – Boolean

3

Có thể viết mô hình Django hoạt động với cơ sở dữ liệu cũ (tôi đã thực hiện điều này trong quá khứ; xem tài liệu trên manage.py inspectdb).

Tuy nhiên, tôi sẽ làm theo lời khuyên ở trên và thiết kế cơ sở dữ liệu sạch bằng cách sử dụng quy ước Django và sau đó di chuyển dữ liệu qua. Tôi thường viết kịch bản di chuyển mà ghi vào cơ sở dữ liệu mới thông qua Django và đọc cái cũ bằng cách sử dụng các API DB thô nguyên (trong khi nó có thể gắn Django với multiple databases simultaneously, quá).

Tôi cũng khuyên bạn nên xem xét các ứng dụng viết blog có sẵn cho Django. Nếu có trong Pinax phù hợp với nhu cầu của bạn, hãy tiếp tục và sử dụng Pinax làm điểm xuất phát.

0

S.Lott answer vẫn hợp lệ sau nhiều năm, tôi cố hoàn thành phân tích bằng các công cụ và định dạng để thực hiện công việc.

Hiện có rất nhiều công cụ xuất khẩu Drupal, nhưng với cùng một yêu cầu, tôi chọn Views Datasource chọn JSON làm định dạng. Mô-đun này rất chắc chắn và có sẵn cho phiên bản cuối cùng của Drupal. Định dạng JSON rất nhanh trong cả phân tích cú pháp và mã hóa và dễ đọc và thân thiện với Python (import json).

Sử dụng chế độ xem Nguồn dữ liệu bạn có thể tạo chế độ xem nút được sắp xếp theo id nút (nid), hiển thị số lượng phần tử giới hạn trên mỗi trang, định cấu hình đường dẫn chế độ xem, thêm vào đó bộ nhận dạng bộ lọc và chuyển đến nid để đọc tất cả cho đến khi bạn nhận được phản hồi JSON trống.

Khi nhập ở Django bạn cũng có một bộ công cụ rộng, bắt đầu từ loaddata to load fixtures. Views Datasource xuất khẩu JSON nhưng nó không được định dạng như Django mong đợi đồ đạc: bạn có thể viết một custom admin command để làm việc nhập khẩu, nơi bạn có thể có toàn quyền kiểm soát dòng nhập.

Bạn có thể bắt đầu lệnh truyền tham số nid = 0 làm cho thủ tục đọc, nhập và sau đó tìm nạp dữ liệu từ trang tiếp theo chỉ đơn giản là nid cuối cùng được đọc trong yêu cầu HTTP trước đó. Bạn thậm chí có thể hạn chế quyền truy cập vào đường dẫn trên chế độ xem nhưng bạn cần cấu hình bổ sung ở phía nhập.

Về hiệu suất, ví dụ tôi đã phân tích cú pháp và nhập hơn 15.000 nút trong chưa đầy 10 phút qua lệnh quản trị tùy chỉnh Django 1.8 trên máy ảo 8 lõi/8 GB Linux và PostgreSQL làm DBMS, ghi nhật ký thành công và thông tin lỗi một mô hình tùy chỉnh cho mỗi nút.

Đây là những điều cơ bản để nhập/xuất giữa hai nền tảng này, để biết thông tin chi tiết tôi đã mô tả tất cả major steps for export from Drupal and then import to Django in this guide.

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