2010-05-24 2 views
8

Tôi đã xây dựng một trang web Django sẽ tồn tại ở gốc khi nó đang hoạt động. Ngay bây giờ nó hoạt động hoàn hảo tại địa chỉ IP. Đối với mục đích thử nghiệm, khách hàng đã chỉ ra một URL proxy tại đó, nhưng url có/thư mục/đường dẫn trong đó, vì vậy không có mẫu URL nào phù hợp. Tôi đặt (/ thư mục/đường dẫn)? vào tất cả các mẫu url để chúng hiện phản hồi, nhưng tất cả các liên kết đều bị hỏng vì tôi đang sử dụng thẻ {% url%} và trong khi các mẫu url sẽ khớp với đường dẫn tùy chọn, chúng không bao gồm nó trong thẻ đó.Django: Tiền tố URL toàn trang web

Rõ ràng tôi chỉ có thể mã hóa/thư mục/đường dẫn vào tất cả các url của mình (tốt, vào tất cả url bao gồm) cho đến khi thử nghiệm hoàn tất, nhưng có cách nào tốt hơn để làm điều này không?

Trả lời

5

Bạn quản lý điều này khi bạn triển khai ứng dụng của mình, bằng cách đặt chính xác WSGIScriptAlias trong cấu hình Apache của bạn (giả sử bạn đang sử dụng mod_wsgi, bạn nên làm gì). Điều này được chuyển sang Django, sau đó tự động chuyển tiếp tất cả các URL tra cứu ngược với giá trị chính xác. Bạn không cần phải làm bất kỳ hướng dẫn sử dụng mucking về với tiền tố.

+2

Để làm rõ, nói cách khác, hãy đảm bảo điểm gắn kết URL được sử dụng với WSGIScriptAlias ​​ở cuối phía sau khớp với URL được gắn với bất kỳ proxy giao diện người dùng nào. Miễn là chúng giống nhau thì tất cả đều hoạt động tốt đối với tiền tố. –

+1

@Daniel về triển khai nginx + uwsgi thì sao? – panchicore

+0

@Daniel Roseman Tôi đang triển khai ứng dụng django của tôi trong apache cục bộ trên xampp và tôi có 'WSGIScriptAlias ​​/ dj/"c: /xampp/htdocs/commons/mod.wsgi" 'nhưng bạn dường như tôi phải làm gì url trong ứng dụng đã phát triển của tôi với/dj /. Nếu tôi hiểu bạn một cách chính xác dj whould được tiền tố automaitcally nhưng đó không phải là trường hợp. Tôi đang gặp gì sai – flexxxit

1

Đối với người phối ngẫu này, tôi sử dụng URL_PREFIX trong settings.py và thêm nó vào mỗi bao gồm trong urls.py. Tôi cũng thêm nó vào đầu MEDIA_URL, cho tất cả các liên kết hình ảnh/css/js hoạt động. Nhưng tôi cũng muốn nghe về một số giải pháp khôn lanh hơn?

0

nếu WSGIScriptAlias ​​không hoạt động hoặc bạn không thể thiết lập vì lý do nào đó, hãy nhớ rằng hàm include() trong urlconf thêm tiền tố vào tất cả các URL. bạn có thể tạo một urlconf bao gồm url url gốc hiện tại của bạn và gắn nó vào tiền tố, sau đó trỏ tệp settings.py của bạn vào urlconf đó.

Tuyên bố từ chối trách nhiệm: chưa tự mình thử nghiệm này, nhưng nó sẽ hoạt động.