I'm having some difficulties finding information about this, probably it's not the right approach. I'd like to route a request to two different view functions based on the http method (GET or POST or DELETE or PUT).
As it is usually done in REST apis, this would mean that the same url has different meaning based on the HTTP method.
I don't see a way to do this in the urls.py file of django, I'd like something like:
url(r'^tasks$', 'app.views.get_tasks', method='get'),
url(r'^tasks$', 'app.views.create_task', method='post'),
I don't think you can do this with different functions without adding a bunch of logic to the URL (which is never a good idea), but you can check inside the function for the request method:
def myview(request): if request.method == 'GET': # Code for GET requests elif request.method == 'POST': # Code for POST requests
You could also switch to class-based views. You would then only need to define a method for each of the HTTP methods:
class CreateMyModelView(CreateView): def get(self, request, *args, **kwargs): # Code for GET requests def post(self, request, *args, **kwargs): # Code for POST requests
If you decide to go the class-based route, another good resource is http://ccbv.co.uk/.