0

Ich habe eine Django-Anwendung mit einem Modell mit einer TextField erstellt. Als ich das Admin-Interface verwenden, kann ich die TextField als solche unten füllen:Wie man Zeichen in einem Textfeld korrekt in einer JSON Vorlage rendert

Admin interface with TextField

Allerdings, wenn ich es in JSON machen mit einer Vorlage ich folgendes in meinem Browser bekommen. I.e.

Web browser with rendered JSON

Ich bin nicht sicher, wie diese richtig zu handhaben, so dass der Text von meinem Textfeld eingegeben werden können, die innerhalb des Admin-Interface erforderlich ist, und dann wiedergegeben: Es kann nicht die Zeilenumbrüche korrekt als solche behandeln richtig als JSON.

Hier ist ein Ausschnitt aus meinem model.py:

@python_2_unicode_compatible 
class Venue(models.Model): 
    id = models.UUIDField(primary_key=True, default=uuid.uuid4, editable=False) 
    name = models.CharField(max_length=50, blank=False, null=False) 
    description = models.TextField(blank=False, null=False) 
    def __str__(self): 
     return self.name 

Hier wird die Funktion in der views.py

def venues(request): 
    venues_list = Venue.objects.order_by('-name') 
    context = {'venues_list':venues_list} 
    return render(request, 'myapp/venues.json', context, content_type='application/json') 

Hier meine venue.json Vorlage:

[ 
    {% for venue in venues_list %} 
     { 
      "venue_id":"{{venue.id}}", 
      "name":"{{venue.name}}", 
      "description":"{{venue.description}}" 
     } 
     {% if forloop.last %}{% else %}, {% endif %} 
    {% endfor %} 
] 

Irgendwelche Hilfe geschätzt?

P.S. Nicht sicher, ob eine Vorlage ein guter Ansatz ist. Aber ich möchte steuern, welche Felder in den JSON-Daten angezeigt werden, und nicht nur JSON, um das gesamte Modell auszugeben.

Antwort

0

Ich schaffte es ... Nachdem ich weiter gelesen hatte, entschied ich, dass die Verwendung einer Vorlage nicht die beste Methode zum Rendern von JSON-Daten war. Ich fand, ich könnte JsonResponse verwenden, um die Anzeige der JSON-Daten korrekt zu behandeln.

Also hier habe ich meine Vorlage gelöscht und meine Funktion in views.py neu geschrieben, um so zu sehen.

von django.http Import JsonResponse ...

def venues(request): 
    venues_list = Venue.objects.order_by('-name') 
    venue_array =[] 

    for venue in venues_list: 
     record = {"venue_id":venue.id, "name":venue.name, "description":venue.description} 
      venue_array.append(record) 

    return JsonResponse(venue_array, safe=False) 

Alle funktioniert jetzt, da meine JSON richtig angezeigt wird mit den entsprechenden Zeilenumbrüche.