google appengine + inline svg + xhtml

ผมอยากใช้ inline svg เพราะว่าอยากแสดง gantt chart หน้าเดียวกับ form แต่ว่าพอเอา inline svg ไปใส่ใน html แล้วใช้ไม่ได้ (ก็น่าจะเป็นแบบนั้นอยู่แล้วมั้ง) ก็เลยเปลี่ยนมาใช้ xhtml แทน. แต่ว่าก็พึ่งเคยทำใน gae (google appengine) ก็เลยบันทึกไว้สักหน่อย เวลาใช้ xhtml ก็ต้องเปลี่ยน Content-Type ใน header ของ response หน่อย แบบนี้

...
class MainHandler(webapp.RequestHandler):
    def get(self):
        self.response.headers['Content-type'] = 'application/xhtml+xml'
        ...

แค่นี้ผมก็นึกว่าจะเนียนแล้ว แต่พอจะส่ง url ออกไป logout พบว่ามี & ติดอยู่โดยไม่ได้ escape และ Firefox ก็ไม่ยอมแสดงผล (ซึ่งก็น่าจะเป็นแบบนั้นอีกตามเคย) ผมก็เลยเขียนแก้ไปแบบ อาจจะสกปรกหน่อย เพราะนึกอะไรไม่ออก

...
class MainHandler(webapp.RequestHandler):
    def get(self):
        ...
        path = os.path.join(os.path.dirname(__file__), 'index.html');
        val = {'logout_url': users.create_logout_url(self.request.uri).replace("&", "&"),
               ... }
        self.response.out.write(template.render(path, val))

ก็คือ replace & ด้วย & ไปตรง แต่ก็ไม่รู้ว่าแบบนี้จะใช้ได้ทุกกรณีหรือเปล่า

<div id="result">
    
        {{ svg }}
    
</div>

ใน template ผมก็เอา svg ไปใส่ได้เลย … ดูตัวอย่างได้จาก vtimeline revision 13

2 thoughts on “google appengine + inline svg + xhtml

ใส่ความเห็น

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / เปลี่ยนแปลง )

Twitter picture

You are commenting using your Twitter account. Log Out / เปลี่ยนแปลง )

Facebook photo

You are commenting using your Facebook account. Log Out / เปลี่ยนแปลง )

Google+ photo

You are commenting using your Google+ account. Log Out / เปลี่ยนแปลง )

Connecting to %s