2009-06-12 20 views
8

में तारों के रूप में प्रदान की मेरी Django आवेदन में बार मैं एक वेब सेवा, स्ट्रिंग के रूप में से कई बार मिलता है, कि मैं अपने टेम्पलेट्स में उपयोग करें:प्रारूपण तारीख Django

{{date.string}} 

यह मैं इस तरह के रूप में एक तारीख के साथ प्रदान करता है:

2009-06-11 17:02:09+0000 

ये स्पष्ट रूप से थोड़ा बदसूरत हैं, और मैं उन्हें अपने उपयोगकर्ताओं के लिए एक अच्छे प्रारूप में प्रस्तुत करना चाहता हूं।

{{ value|date:"D d M Y" }} 

हालांकि इस उम्मीद मूल्य एक तारीख वस्तु के रूप में प्रदान किया जाना है, और नहीं एक स्ट्रिंग: Django एक महान तारीख फ़ॉर्मेटर में बनाया गया है, जो करना होगा मैं वास्तव में क्या चाहते थे नहीं है। तो मैं इसका उपयोग करके इसे प्रारूपित नहीं कर सकता। स्टैक ओवरव्लो पाइथन पर खोज करने के बाद स्ट्रिपटाइम ऐसा लगता है जो मैं चाहता हूं, लेकिन पाइथन के लिए बिल्कुल नया होने के नाते मैं सोच रहा था कि कोई भी स्ट्रिंग का उपयोग करके डेट स्वरूपण प्राप्त करने का आसान तरीका लेकर आ सकता है, बिना किसी नए कस्टम स्ट्रिपटाइम को लिखने का सहारा लेना टेम्पलेट टैग?

उत्तर

10

आप संभवतः अपने व्यू कोड में webservice से प्राप्त स्ट्रिंग को पार्स करने और प्रदर्शन के लिए टेम्पलेट में datetime.date (या स्ट्रिंग) को पार करने से बेहतर हैं। Django टेम्पलेट्स की भावना यह है कि बहुत कम कोडिंग काम किया जाना चाहिए; वे केवल प्रस्तुति के लिए हैं, और यही कारण है कि वे HTML में एम्बेडेड पायथन कोड लिखने से रोकने के लिए उनके रास्ते से बाहर निकलते हैं।

कुछ की तरह:

from datetime import datetime 
from django.shortcuts import render_to_response 

def my_view(request): 
    ws_date_as_string = ... get the webservice date 
    the_date = datetime.strptime(ws_date, "%Y-%m-%d %H:%M:%S+0000") 
    return render_to_response('my_template.html', {'date':the_date}) 

मैथ्यू बताते हैं, इस समय क्षेत्र के चला जाता है। यदि आप जीएमटी से ऑफ़सेट को संरक्षित करना चाहते हैं, तो उत्कृष्ट तृतीय-पक्ष dateutils लाइब्रेरी का उपयोग करने का प्रयास करें, जो समय-समय पर कई प्रारूपों में पार्सिंग तिथियों को सहजता से प्रबंधित करता है, बिना समय प्रारूप टेम्पलेट प्रदान किए बिना।

+5

+1 टेम्पलेट पर नहीं, दृश्य में डेटा प्रोसेसिंग रखें। – krubo

+8

आप तर्क दे सकते हैं कि चूंकि आप तिथि स्वरूपित कर रहे हैं, प्रस्तुति परत (यानी, टेम्पलेट) में ऐसा करना उचित होगा – btk

+1

मुझे अपने "संदर्भ" जेसन-सक्षम रखना पसंद है, क्योंकि इससे मुझे उन्हें वापस करने की अनुमति मिलती है आरईएसटी प्रतिक्रियाओं के रूप में। पायथन डेटाटाइम जेसन-सीरियलज़ेबल नहीं है, इसलिए मैं टेम्पलेट में रूपांतरण करना चाहता हूं। मुझे लगता है कि यह templatetag का उपयोग करके हासिल किया जा सकता है। –

0

यह Django टैग के साथ सौदा नहीं है, लेकिन strptime कोड है:

d = strptime("2009-06-11 17:02:09+0000", "%Y-%m-%d %H:%M:%S+0000") 

ध्यान दें कि आप समय क्षेत्र की जानकारी छोड़ने कर रहे हैं।

संबंधित मुद्दे