Cách sử dụng Django để lấy tên cho máy chủ lưu trữ?Cách sử dụng Django để lấy tên cho máy chủ lưu trữ?
Tôi cần tên của máy chủ lưu trữ thay vì tên khách hàng?
Cách sử dụng Django để lấy tên cho máy chủ lưu trữ?Cách sử dụng Django để lấy tên cho máy chủ lưu trữ?
Tôi cần tên của máy chủ lưu trữ thay vì tên khách hàng?
Tôi thường đặt một cái gì đó như thế này trong settings.py
:
import socket
try:
HOSTNAME = socket.gethostname()
except:
HOSTNAME = 'localhost'
Giải pháp của bạn không hoạt động, nếu bạn sử dụng Docker. Nó sẽ hiển thị ID vùng chứa thay vì URL. –
Giải pháp của tôi được viết trước khi Docker tồn tại. Lấy làm tiếc. –
Giải pháp đúng có vẻ là 'request.get_host()' – Dorian
Bạn đã thử os.environ.get('HOSTNAME')
?
Nếu bạn có một yêu cầu (ví dụ, đây là bên trong một cái nhìn), bạn có thể nhìn vào request.get_host()
mà được bạn một LOCNAME đầy đủ (máy chủ và cổng), có tính đến tiêu đề proxy ngược lại nếu có. Nếu bạn không có yêu cầu, bạn nên định cấu hình tên máy chủ ở đâu đó trong cài đặt của mình. Chỉ cần nhìn vào tên máy chủ hệ thống có thể không rõ ràng trong nhiều trường hợp, máy chủ ảo là phổ biến nhất.
Chỉ cần thêm vào @Tobu's answer. Nếu bạn có một đối tượng yêu cầu, và bạn muốn biết giao thức (ví dụ: http/https), bạn có thể làm:
if request.is_secure():
protocol = 'https'
else:
protocol = 'http'
Vì is_secure() lợi nhuận True
nếu yêu cầu được thực hiện với HTTPS.
Bạn không thể chỉ sử dụng [request.scheme] (https://docs.djangoproject.com/en/dev/ref/request-response/#django.http .HttpRequest.scheme)? –
@RyneEverett cảm ơn. không biết về nó (facepalm). – azalea
Tôi không thể tin rằng quá trình này rất phức tạp ở Dj. – zallarak