Some quick recipes to show the dj-webmachine usage.
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
This simple resource only return HTML
class MyResource(Resource):
def to_html(self, req, resp):
return "<html><h1>Hello World!</h1></html>"
Suppose you want to serve plaintexts and html clients on valid GET requests:
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 "<html><h1>Hello World!</h1></html>"
def to_text(self, req, resp):
return "Hello World!"
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
@wm.route(r"taroute$",
methods=['GET', 'HEAD'],
provided=[('text/html', 'text/plain')])
def fetched(req, resp):
if resp.content_type == "text/html":
return "<html><h1>Hello World!</h1></html>"
return "Hello World!"
Same code for other methods. You can check the method using req.method
# 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