Skink <sp**@me.pleasewrites:
Hi,
I'm relatively new to django and maybe my question is stupid, but...
Is it possible to map in urls.py some url not to function in views.py
(which has first argument with HttpRequest) but to some class method?
In that case each instance of such class would be created when session
starts and for subsequent calls would be served as self ?
I know, I know that HttpRequest has session member and I can use it.
But maybe it would be good idea to have such url ==class.method
mapping.
I didn't try it with django but maybe closure is the solution.
Try this:
<code>
#!/usr/bin/env python
class MyView(object):
def __init__(self):
self.visited = []
def index(self, *args):
self.visited.append("index")
print "%s.index: %r" % (self.__class__.__name__, args)
return "response from index"
def detail(self, *args):
self.visited.append("detail")
print "%s.detail: %r" % (self.__class__.__name__, args)
return "response from detail"
def error(self, *args):
self.visited.append("error")
print "%s.error: %r" % (self.__class__.__name__, args)
return "response from error"
def make_view(obj, methodname):
def view(*args):
try:
return getattr(obj, methodname)(*args)
except AttributeError:
return obj.error(*args)
return view
view_obj = MyView()
index = make_view(view_obj, "index")
detail = make_view(view_obj, "detail")
download = make_view(view_obj, "download")
print index("request to index")
print detail("request to detail", 25)
print download("request to download", "abc", 99)
print
print "\n".join(view_obj.visited)
</code>
index, detail and download functions can be mapped
in urls.py now.
--
HTH,
Rob