2012-03-31 15 views
10

Więc Django 1.4 właśnie został wydany ze wsparciem strefy czasowej, ale jestem zdezorientowany, jak i kiedy używać "bieżącej strefy czasowej", o której wspominają docs. Kiedy należy aktywować i dezaktywować bieżącą strefę czasową dla użytkownika?Kiedy należy aktywować/dezaktywować bieżącą strefę czasową w Django (1.4)?

Jestem całkiem nowy w Django, więc nie jestem nawet pewien, czy kontekst bieżącej strefy czasowej miałby zastosowanie do konkretnego użytkownika lub do serwera WWW (obejmującego wszystkich użytkowników). Wszelkie wyjaśnienia na ten temat byłyby świetne.

Odpowiedz

12

Nowa funkcjonalność w Django 1.4 sprawia, że ​​czas lokalnego użytkownika/data w szablonach django jest nieco łatwiejszy.

Przede wszystkim musisz skonfigurować parametry TIME_ZONE/USE_TZ.

Następnie, aby skorzystać z funkcji "bieżącej strefy czasowej", należy znać strefę czasową użytkownika. Prawdopodobnie najbardziej niezawodnym sposobem byłoby zapytanie użytkownika bezpośrednio i zapisanie tych informacji w profilu/sesji użytkownika. Możesz także spróbować ustawić plik cookie strefy czasowej za pomocą javascript, korzystając z funkcji getTimezoneOffset() lub spróbować zrobić strefę czasową magii i rysunku geograficznego według lokalizacji.

Gdy wiesz wartości czasowej użytkownika, można go aktywować w middleware:

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

należy również mieć innego klauzula dezaktywacji czasowej. W przeciwnym razie ostatnia aktywowana strefa czasowa będzie używana dla wszystkich kolejnych żądań do momentu aktywacji innej strefy czasowej. – bouke

+0

Bardzo dobry punkt, ponieważ zachowania nie są takie same w rozwoju/produkcji. –

Powiązane problemy