[Flask] Trying to pass XML through to an HTML template

Dunlap, Zachariah ZDunlap at ap.org
Wed Dec 2 12:48:32 EST 2015


Thanks David, I did try stringfying the variable before but didn't realize I could just call it without needing to use request.args. This is certainly a learning experience. Appreciate you answering so quickly

Best,

Zach

-----Original Message-----
From: Flask [mailto:flask-bounces+zdunlap=ap.org at python.org] On Behalf Of David Lord
Sent: Wednesday, December 02, 2015 12:27 PM
To: flask at python.org
Subject: Re: [Flask] Trying to pass XML through to an HTML template

You passed `xmlitem` in `render_template`, so it's not clear why you're trying to access it from `request.args`.  Since it's an etree node, you'll need to call [`.toString`][1] on it to convert it first. 
Reference it as the variable you passed to the context: `{{
xmlitem.toString() }}`.

[1]: 
https://docs.python.org/3/library/xml.etree.elementtree.html#xml.etree.ElementTree.tostring

On 12/02/2015 09:07 AM, Dunlap, Zachariah wrote:
> Hi all,
>
> I’m sure I’m missing something but I haven’t had any luck figuring out 
> what, perhaps someone here can point me in the right direction.
>
> I have the module below which I’m using to get and XML item from a 
> URL, read it and return elements and values to an HTML template.
>
> The itemid and description variables render in the template just fine, 
> the one that I’m having an issue with is the XML I need to send 
> through to a textarea on the template. I’ve tried rendering it as a 
> string, escaping it & encoding it but have had no luck getting it passed through.
>
> I’ve tested getting this XML in a simple module and I know it returns 
> content but the module for this applicattion can’t see that value, it 
> comes back as ‘None’.
>
> Any guidance on how I can pass XML through to the textarea would be 
> greatly appreciated.
>
> MODULE:
>
> @app.route('/updateitem', methods=['GET'])
>
> def updateitem():
>
>      url = 'http://xmldocument.fake'
>
>      url_request = requests.get(url)
>
>      root = etree.fromstring(url_request.text)
>
>      itemid = root.xpath('//main/@id')
>
>      description = root.xpath('//main/text()')
>
>      xmlitem = root.xpath('//ns:XmlItem', namespaces={'ns':
> 'http://fakenamespace.com'})
>
>      # return render_template('create-definitions.html', 
> itemid=itemid, name=name, description=description, xmlitem=xmlitem)
>
>      return render_template('create-definitions.html', **locals())
>
> TEXTAREA NEEDING THE XML:
>
> <textarea rows="20" name="xmlitem" id="xmlitem" >{{
> request.args.get('xmlitem') }}</textarea>
>
> Thanks,
>
>
> Zach
>
> The information contained in this communication is intended for the 
> use of the designated recipients named above. If the reader of this 
> communication is not the intended recipient, you are hereby notified 
> that you have received this communication in error, and that any 
> review, dissemination, distribution or copying of this communication 
> is strictly prohibited. If you have received this communication in 
> error, please notify The Associated Press immediately by telephone at 
> +1-212-621-1898 and delete this email. Thank you.
> [IP_US_DISC]
>
>
> msk dccc60c6d2c3a6438f0cf467d9a4938
>
>
>
> _______________________________________________
> Flask mailing list
> Flask at python.org
> https://mail.python.org/mailman/listinfo/flask
>
_______________________________________________
Flask mailing list
Flask at python.org
https://mail.python.org/mailman/listinfo/flask


More information about the Flask mailing list