2010-02-08 41 views
9

Django có sites framework để hỗ trợ nhiều trang web lưu trữ từ một cài đặt Django duy nhất.Cách kiểm tra cục bộ Trang web của Django Khung

EDIT (dưới đây là một giả định không chính xác của hệ thống)


Tôi hiểu rằng middleware đặt giá trị settings.SITE_ID dựa trên một tra cứu/bộ nhớ cache của miền yêu cầu.


EndEdit

Nhưng khi kiểm tra tại địa phương, tôi đang ở http://127.0.0.1:8000/, không http://my-actual-domain.com/

Làm thế nào để địa phương xem các trang web khác nhau của tôi trong phát triển?

+0

Các liên kết hết hạn bây giờ. Hãy sửa chữa nó. –

Trả lời

17

Tạo tệp settings.py riêng biệt cho mọi trang web, bao gồm cài đặt SITE_ID thích hợp. Tất nhiên bạn có thể sử dụng câu lệnh import để chia sẻ cài đặt chung giữa các tệp.

Từ giờ trở đi khi chạy máy chủ phát triển Django, hãy chỉ định tùy chọn --settings để thông báo cho Django biết trang web nào sẽ chạy.

Ví dụ (giả sử bạn đã có hai tập tin thiết lập - settings_first.py và settings_second.py):

manage.py runserver --settings settings_first 

sẽ chạy trang web đầu tiên, và

manage.py runserver --settings settings_second 

sẽ cung cấp cho bạn một truy cập trang web thứ hai.

Bạn cũng có thể chạy chúng cùng một lúc, xác định các cổng khác nhau:

manage.py runserver 8001 --settings settings_first 

manage.py runserver 8002 --settings settings_second 

Các lệnh trên (chạy trên hai bàn giao tiếp khác nhau) sẽ làm cho trang web đầu tiên accesible dưới http://127.0.0.1:8001/, và một trong những thứ hai dưới http://127.0.0.1:8002/

3

Có thể bạn bị lừa bởi tài liệu. Bạn đã viết:

Tôi hiểu rằng phần mềm trung gian đặt giá trị cài đặt.SITE_ID dựa trên tra cứu/bộ nhớ cache của miền yêu cầu.

Đây không phải là trường hợp. Nó hoạt động chính xác theo cách khác. Django sử dụng giá trị settings.SITE_ID để tìm kiếm đối tượng Trang web chính xác trong cơ sở dữ liệu. Điều này trả về tên miền và tên trang web ưa thích của bạn.

Ứng dụng sites được thiết kế để điền vào (theo ý kiến ​​của tôi) hiếm khi chúng tôi muốn bạn có nhiều trang web có cùng cơ sở dữ liệu trong nền. Điều này cho phép bạn xuất bản các bài viết giống nhau trên các trang web khác nhau nhưng vẫn có sự linh hoạt mà một số mô hình có sẵn chỉ cho một trang web duy nhất.

Để phát triển nhiều dự án (không thực sự sử dụng khung công tác trang web), bạn không phải chỉ định bất kỳ điều gì đặc biệt. Bạn có thể sử dụng mặc định SITE_ID được đặt thành 1.Để sử dụng chế độ xem của quản trị viên trên trang web liên kết, bạn có thể đặt trong cơ sở dữ liệu phát triển của mình là tên miền của Site thành localhost:8000.

Nếu bạn muốn phát triển nhiều trang web bằng cùng một cơ sở dữ liệu (và sử dụng khung công tác trang web), bạn phải có từng dự án với SITE_ID riêng biệt nhưng có cùng cài đặt cơ sở dữ liệu. Các giá trị cho SITE_ID trong mỗi dự án trên máy phát triển của bạn là trong hầu hết các trường hợp giống như cho các máy chủ sản xuất của bạn.

+0

Cảm ơn Gregor. Tôi nghi ngờ tôi rất hiểu lầm. Tôi có thể sẽ tạo phần mềm trung gian để làm những gì tôi mặc dù Django đã và đang tìm kiếm thuộc tính chuỗi truy vấn 'site = my-site-1.com' khi miền được yêu cầu nằm trong cài đặt.DEVELOPMENT_SERVERS, như: nếu yêu cầu .META ['SERVER_NAME'] trong cài đặt.DEVELOPMENT_SERVERS: #do tra cứu và đặt trang web trong phiên –

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