मैं एक ऐप बना रहा हूं जो दुनिया भर के विभिन्न स्थानों में स्थित लोगों की सेवा करेगा।
मैं ग्राहकों और सर्वर के बीच संचार के लिए Django-Rest-Framwork का उपयोग कर रहा हूं।
सभी डेटटाइम मान डीबी में यूटीसी के रूप में सहेजे जाते हैं (मेरे पास USE_TZ = True
और TIME_ZONE = 'Greenwich'
सेटिंग्स.py में हैं)।Django-rest-framework timezone जागरूक renderers/पार्सर्स
मैं उपयोगकर्ता से अपने स्थानीय टाइमज़ोन प्राप्त कर रहा हूं।
import pytz
from django.utils import timezone
class TimezoneMiddleware(object):
def process_request(self, request):
timezone.activate(pytz.timezone("Asia/Jerusalem"))
समस्या है::
करने के लिए परीक्षण समय क्षेत्र जागरूकता के लिए डीआरएफ मैं निश्चित समय क्षेत्र के साथ इस मिडलवेयर लिखा
मैं एक मामला है जिसमें मैं उपयोगकर्ता "start_time" से हो रही है है और उपयोगकर्ता के LOCAL टाइमज़ोन में UnicodeJSONRenderer
से ModelSerializer
पर और फिर डीबी में सहेजा गया "end_time" फ़ील्ड डेटाटाइम को शामिल करता है। हालांकि, वे सहेजे गए हैं जैसे कि वे यूटीसी में थे।
इस बिंदु पर मैं सीरियलाइज़र (या पार्सर) को डेटाटाइम इनपुट के रूप में उपयोगकर्ता से डेटाटाइम इनपुट के रूप में व्यवहार करने की अपेक्षा करता हूं, जिसे डीबी में सहेजने से पहले "एशिया/जेरूसलम" से यूटीसी में परिवर्तित करने की आवश्यकता होती है क्योंकि मैंने timezone.activate(pytz.timezone("Asia/Jerusalem"))
किया था।
वही तब होता है जब डेटा JSONParser
के माध्यम से प्रतिक्रिया में वापस पार्स किया जाता है।
लौटे हुए जेएसओएन में डेटटाइम फ़ील्ड्स को मिडलवेयर में सक्रिय टाइमज़ोन में होने की उम्मीद करते समय, वे यूटीसी के रूप में वापस आते हैं।
मैं डीआरएफ में आसानी से इसे कैसे प्राप्त कर सकता हूं?
आप एक मिला संस्करणों (आम/serializers.py) के साथ काम करने के लिए इसे अपडेट करने के बाद पुन: पोस्ट कर रहा हूँ उपाय? – yakxxx
@yakxxx - दुर्भाग्य से अभी तक नहीं। अभी के लिए मैं जीएमटी में डेटाटाइम वैल्यू प्राप्त करता हूं और वापस देता हूं और स्थानीय टाइमज़ोन में रूपांतरण क्लाइंट के पक्ष में किया जाता है। – OrPo
क्या आप एक अनुरोध पोस्ट कर सकते हैं? मुझे आश्चर्य है कि आपने JSON के अंदर किस प्रारूप का उपयोग किया था? क्या आप एक टाइमज़ोन जागरूक आईएसओ 8601 स्ट्रिंग का उपयोग कर रहे हैं? – codingjoe