Error 404 al pasar una oración de “Alerta” de la página de python a html, pero no hay error al pasar solo una palabra

Actualización : el mensaje de error que recibo con la oración es 404 Recurso no encontrado.

"GET /unexpected/The%20Notebook%20name%20is%20taken%20already HTTP/1.1" 404 - 

La URL se ve así cuando se produce ese error.

 http://localhost:8088/unexpected/The%20Notebook%20name%20is%20taken%20already 

Intento muy mal crear un tipo de sistema de “Alerta” para los errores de usuario en mi aplicación. Me parece que los espacios entre las palabras son el problema. Pero debe haber una forma simple y elegante de hacer esto.

De las dos líneas a continuación, la de arriba funciona, pero no la de abajo.

 return webapp2.redirect("/unexpected/%s" % 'Hello') # return webapp2.redirect("/unexpected/%s" % 'The Notebook name is taken already') 

La definición correspondiente es la siguiente. Aquí hubiera preferido que la línea comentada funcionara, pero tampoco lo hará.

 class Unexpected(BaseHandler): def get(self, reason): template_values = {'reason':reason} path = os.path.join(TEMPLATE_DIR, 'unexpected.html') self.response.out.write(template.render(path, template_values)) # return webapp2.redirect('/unexpected/%s/ % reason') app = webapp2.WSGIApplication([ ('/', MainPage), ('/unexpected/([\w]+)', Unexpected)]) 

¿Cómo puedo enviar un mensaje a la página unexpected.html ? He hecho esto antes con Alertas de JavaScript, pero estoy tratando de NO usar javascript aquí.

 {% extends "base.html" %} {% block content %} This unexpected result occurred: {{ reason }} 
Click the back button and edit your entry. {% endblock content %}

Mi problema es que estoy tratando de hacer esto en def get( sin un modelo de almacén de datos para transferir información al def get( . He definido un def get( que usa un modelo de almacén de datos llamado Trans que almacena la información transaccional que está contenida en mi oración en una variable llamada reason .

 class Trans(db.Model): reason = db.StringProperty() 

Mi modelo llamado Unexpected parece a lo siguiente.

 class Unexpected(BaseHandler): def get(self): trans=Trans.get_by_key_name('reason') template_values = {'trans':trans} path = os.path.join(TEMPLATE_DIR, 'unexpected.html') self.response.out.write(template.render(path, template_values)) 

Y mis códigos de python son los siguientes.

 reason='That Notebook name is taken already.' trans = Trans(key_name='reason') trans.reason=reason trans.put() template_values = {'trans':trans} path = os.path.join(TEMPLATE_DIR, 'unexpected.html') self.response.out.write(template.render(path, template_values)) 

Mi código unexpected.html sigue.

 {% extends "base.html" %} {% block content %} This unexpected result occurred: {{ trans.reason }} 


{% endblock content %}