2012-03-31 34 views
10

Vì vậy, Django 1.4 vừa được phát hành với hỗ trợ múi giờ, nhưng tôi nhầm lẫn với cách thức và thời điểm sử dụng "múi giờ hiện tại" mà tài liệu liên tục đề cập đến. Khi nào tôi nên kích hoạt và hủy kích hoạt múi giờ hiện tại cho người dùng?Khi nào tôi nên kích hoạt/hủy kích hoạt múi giờ hiện tại ở Django (1.4)?

Tôi khá mới với Django, vì vậy tôi thậm chí không chắc liệu ngữ cảnh của múi giờ hiện tại có áp dụng cho người dùng cụ thể hay máy chủ web (bao trùm tất cả người dùng). Bất kỳ làm rõ về điều này sẽ là tuyệt vời.

Trả lời

12

Chức năng mới trong Django 1.4 giúp hiển thị thời gian/ngày địa phương của người dùng trong các mẫu django của bạn dễ dàng hơn một chút.

Trước hết, bạn cần phải thiết lập thông số TIME_ZONE/USE_TZ của mình.

Sau đó, để sử dụng chức năng "múi giờ hiện tại", bạn cần biết múi giờ của người dùng. Có lẽ cách đáng tin cậy nhất là yêu cầu người dùng trực tiếp và lưu thông tin này trong hồ sơ/phiên người dùng. Ngoài ra, bạn có thể thử đặt cookie múi giờ qua javascript bằng cách sử dụng chức năng getTimezoneOffset() hoặc cố gắng thực hiện một số múi giờ địa lý và ma thuật theo vị trí.

Một khi bạn biết giá trị múi giờ của người dùng, bạn có thể kích hoạt nó trong middleware của bạn:

class MyTimezoneMiddleware(object): 
    def process_request(self, request): 
     user_timezone = request.session.get('current_timezone') 

     if user_timezone: 
      timezone.activate(user_timezone) 
     else: 
      timezone.deactivate() 
+5

hãy chắc chắn cũng phải có một ai khác-khoản Tăt múi giờ. Nếu không, múi giờ được kích hoạt lần cuối sẽ được sử dụng cho tất cả các yêu cầu liên tiếp cho đến khi một múi giờ khác được kích hoạt. – bouke

+0

Điểm rất tốt vì hành vi không giống nhau trong phát triển/sản xuất. –

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