Global Template System in Google App Engine

I love using one template file that includes my content. I personally don’t like the idea of having to include “header” and “footer” into every single content file.

My main reason is because sometime I have multiple templates (for example, view, mobile, json or xml). If I include the template into my content, I will need some logic to cater for different views. Therefore, I did some research and managed to come up with something relatively simple.

This is how basic Google App Engine Template works (more information visit: Using Templates)

import os
from google.appengine.ext.webapp import template

class MainPage(webapp.RequestHandler):
  def get(self):
    template_values = {'content' : 'hello world'}
    path = os.path.join(os.path.dirname(__file__), 'index.html')
    self.response.out.write(template.render(path, template_values))

This is how I get what I need to work

import os
from google.appengine.ext.webapp import template

class MyTemplate(webapp.RequestHandler):
  def render(self, template_name, param):
    template_values = dict({'template_name': template_name}, ** param)
    path = os.path.join(os.path.dirname(__file__) + '/view', 'my_template.html')
    self.response.out.write(template.render(path, template_values))

class MainPage(MyTemplate): # extend MyTemplate
  def get(self):
    template_values = {'content' : 'hello world'}
    # calls render function from super class (MyTemplate)
    self.render('index.html', template_values)

Simple?

Advertisements

How to merge 2 dictionaries in Python

I have been disappearing for quite awhile due to work and other stuff. Recently, I have been looking heavily into Google App Engine (GAE) and Python. Hopefully, I will discover something interesting and is able to share them here.

Today I was creating a global template system in GAE and I found myself needing to merge 2 dictionaries together.

I thought it was gonna be something like merge or append functions but Stackoverflow points me to this interesting syntax.

a = { ‘one’ : ‘one’, ‘two’ : ‘two’}

b = {‘three’ : ‘three’}

c = dict(a, ** b) # merge a and b

I questioned myself about the syntax for awhile but I agreed to try it and it works perfectly.

Install Python IDE on Ubuntu

Today, I tried to learn Python with django framework. Python has been on my study list for awhile. Finally, I got around to learn it today.

First of all, thanks go to Tim for recommending an IDE to me. I’m attempting to learn Python via Stani’s Python Editor.

This is how I installed it:

1. Open terminal

2. sudo apt-get install spe

3. And I hit enter. How simple!