Tôi đã sửa đổi phần mềm trung gian multihost.py mà tôi tìm thấy tại http://effbot.org/zone/django-multihost.htm để cài đặt.SITE_ID động, nhưng có một số lo ngại rằng tôi có thể vừa rời khỏi đặt chỗ.An toàn để sửa đổi cài đặt.SITE_ID từ phần mềm trung gian ở Django?
Hầu hết các ví dụ tôi đã tìm thấy cho nhiều miền lưu trữ đã được thiết lập với nhiều tệp settings.py được mã hóa cứng thành SITE_ID tương ứng của chúng.
Tôi đã tạo bản sửa lỗi có lỗ hổng nghiêm trọng ở đây chưa? Sẽ thay đổi giá trị này tự động cắn tôi vào **.
from django.conf import settings
from django.contrib.sites.models import Site
class MultiHostMiddleware:
def process_request(self, request):
try:
host_raw = request.META["HTTP_HOST"]
colon = host_raw.find(':')
if colon > -1:
host = host_raw[0:colon]
else:
host = host_raw
s = Site.objects.get(domain=host)
if s:
settings.SITE_ID = s.id
except KeyError:
pass # use default urlconf (settings.ROOT_URLCONF)
Để biết điều này đang diễn ra và đang chạy cho đến nay, nhưng không chịu được lưu lượng truy cập thực tế.
Không có ý tưởng cho dù điều đó sẽ làm việc, nhưng tôi tự hỏi liệu việc sử dụng 'urlparse' sẽ tốt hơn cho việc nhận tên máy (http://docs.python.org/library/urlparse.html). –
Thông tin bổ sung, mã này đã được đặt trên một trang web tên miền 2 trong khoảng một tuần nay mà không có trục trặc rõ ràng. Lưu lượng truy cập khá thấp nhưng tôi cho rằng khái niệm này vẫn giữ nguyên. –