.. _recipe: Recipes ------- Some quick recipes to show the dj-webmachine usage. Get path named arguments ++++++++++++++++++++++++ if you have some named arguments in your url pattern, you can get them using the ``url_kwargs`` member of the req object:: kwargs = req.url_kwargs Simplest working resource +++++++++++++++++++++++++ This simple resource only return HTML .. code-block:: python class MyResource(Resource): def to_html(self, req, resp): return "

Hello World!

" Return different content types on GET +++++++++++++++++++++++++++++++++++++ Suppose you want to serve plaintexts and html clients on valid GET requests: .. code-block:: python class MyResource(Resource): def content_types_provided(self, req, resp): return [ ("text/html", self.to_html), ("text/plain", self.to_text) ] def to_html(self, req, resp): return "

Hello World!

" def to_text(self, req, resp): return "Hello World!" Handle POST using the resource ++++++++++++++++++++++++++++++ .. code-block:: python class MyResource(Resource): def allowed_methods(self, req, resp): return ['POST'] def content_types_accepted(self, req, resp): return [('application/json', self.to_json)] def to_json(self, req, resp): body = json.loads(req.raw_post_data) resp.content = json.dumps(json.dumps(body)) def post_is_create(self, req, resp): return True Handle GET using the decorator ++++++++++++++++++++++++++++++ .. code-block:: python @wm.route(r"taroute$", methods=['GET', 'HEAD'], provided=[('text/html', 'text/plain')]) def fetched(req, resp): if resp.content_type == "text/html": return "

Hello World!

" return "Hello World!" Handle POST using the decorator +++++++++++++++++++++++++++++++ Same code for other methods. You can check the method using ``req.method`` .. code-block:: python # with teh decorator @wm.route(r"taroute$", methods="POST", accepted=[('application/json', json.loads)], provided=[('application/json', json.dumps)]) def posted(req, resp): # my body has been deserialized body = req.raw_post_data # my body will be serialized return body