def _generateMountURLs(self, path, mapping, app=None):
p = path
@csrf_exempt # dispatcher (view) needs to be csrf exempted
def dispatcher(req, *args, **kwargs):
service = mapping.get(req.method, None) or mapping.get('*', None)
if service:
return service['src'](req, *args, **kwargs)
else:
return HttpResponseNotAllowed(mapping.keys())
# relative path
if not p.startswith('/'):
if app:
p = '/'.join([app, p]) # add app name prefix in addition to 'path'
# absolute path
else:
p = p[1:] # remove leading '/'
# support reverse() in template for <a href=...> and <form action=...>
reversable = mapping.get('*', None) or mapping.get('GET', None) or mapping.get('POST', None)
return url(r'^{}$'.format(p), dispatcher, name='.'.join([reversable['src'].__module__, reversable['name']]) if reversable else None)
评论列表
文章目录