2016-07-26 5 views
1

die Django Template-Tags verwenden, ein Datetimefield wird wie folgt aussehen:Django: Datetimefield auf String mit L10N

July 25, 2016, 7:11 a.m. 

Problem ist, meine Website eine unendliche Spirale und neue Daten kommen über AJAX hat, und so kann ich verwende dafür keine Schablonen-Tags von Django. Mit diesem, das Datum zu erhalten:

str(self.date_created) 

ich so etwas wie diese:

2016-07-23 14:10:01.531736+00:00 

Welche sieht nicht gut aus ... Gibt es eine Möglichkeit, den Wert unter Verwendung von Datetimefield Djangos Standard-Format zu konvertieren? Vielen Dank.

Antwort

2

Sie Feld mit self.date_created.strftime("%B %d, %Y, %I:%M %p") auf Back-End-Format oder Sie können es auf Frontend-Format

var dateCreated = new Date(item.date_created); 
dateCreated.toLocaleString() 
+0

Danke! Ich benutzte beide Antworten, aber deine war das, wonach ich suchte, obwohl auch der andere half. – Antoni4040

2

Eigentlich können Sie immer noch Django eingebauten date Filter für eine Ajax-Antwort verwenden. Innerhalb Ihrer Ansicht verwenden Sie die render_to_string dann senden Sie als JSON (vorausgesetzt, Ihre JS erwartet JSON).

import json 
from django.template.loader import render_to_string 

class YourAjaxResponseView(View): 
    template_name = 'your_ajax_response_template.html' 

    # I ASSUMED IT'S A GET REQUEST 
    def get(self, request, *args, **kwargs): 
     data = dict() 
     data["response"] = render_to_string(
      self.template_name, 
      { 
      "your_date": your_date 
      }, 
      context_instance=RequestContext(request) 
     ) 
     return HttpResponse(
     json.dumps(data), 
     content_type="application/json", 
     status=200 
    ) 

Und Ihre Vorlage kann einfach das sein

# your_ajax_response_template.html 
{{ your_date|date:"YOUR_FORMAT" }} 
+0

Thank you! Aber, Sie sollten die Antwort bearbeiten, es ist | Datum nicht | Daten ... – Antoni4040

Verwandte Themen