views:

726

answers:

1

I'm learning Python and django at the same time. I'm trying to create an xml document to return some XML from a view. I'm using the django development server at the moment and I keep getting this information spitting out in my views instead of the document I tried to create.

Here's my code

 from django.http import HttpResponse
 from mypoject.myapp.models import Username
 from django.core import serializers
 from xml.dom.minidom import Document
 import datetime


 def authenticate(request, username):
  if request.method == "GET":

   #Try to get the username
   try:
    checkUser = Username.objects.get(username__exact = username)
    user = userCheck.get(username__exact = username)
    userXML = serializers.serialize("xml", checkUser)

   except Username.DoesNotExist:
    #return XML with status "Failed"
    return HttpResponse(xml, mimetype="text/xml")  
   except:
    #return XML with status "Failed"

    xmlFailed = Document()

    meta = xmlFailed.createElement("meta")
    xmlFailed.appendChild(meta)

    status = xmlFailed.createElement("status")
    meta.appendChild(status)
    statusText = xmlFailed.createTextNode("Failed")
    status.appendChild(statusText)

    message = xmlFailed.createElement("message")
    meta.appendChild(message)

    totalRecords = xmlFailed.createElement("totalRecords")
    meta.appendChild(totalRecords)

    executionTime = xmlFailed.createElement("executionTime")
    meta.appendChild(executionTime)

    return HttpResponse(xmlFailed, mimetype="text/xml")
   else:
    #return happy XML code with status "Success"

And here's what's going to the screen when I view it in my browser...

<xml.dom.minidom.Document instance at 0x993192c>

If I comment out the Document() creation that goes away. So I'm think I just need it to not spit out the information. I've been searching all over and I can't find a strait answer which leads me to believe I'm missing something blatantly obvious.

Thanks for any help!

+1  A: 

You'll need to call xmlFailed.toxml() or the like in order to get XML out of your object -- looks like that's not what you're doing (in the code you didn't show us).

Alex Martelli
Thanks. Here's the code I needed xmlResponse = xmlFailed.toxml("UTF-8") return HttpResponse(xmlResponse, mimetype="text/xml")
Thomas Schultz
Also, for nicer human-readable formatted XML, use toprettyxml() instead of toxml().
James Bennett