diff --git a/planetstack/core/dashboard/views/tenant.py b/planetstack/core/dashboard/views/tenant.py
index 9066a2b..930ccf6 100644
--- a/planetstack/core/dashboard/views/tenant.py
+++ b/planetstack/core/dashboard/views/tenant.py
@@ -31,7 +31,7 @@
 	   addOrModifyPorts(networkPorts,sliceName)
 	   if privateVolume=="true":
 	   	privateVolForSlice(request.user,sliceName)
-        return HttpResponse(json.dumps("Slice created"), mimetype='application/javascript')
+        return HttpResponse(json.dumps("Slice created"), content_type='application/javascript')
 
 def privateVolForSlice(user,sliceName):
 	if not hasPrivateVolume(sliceName):
@@ -64,7 +64,7 @@
 	addOrModifyPorts(networkPorts,sliceName)
 	if privateVolume=="true":
                 privateVolForSlice(request.user,sliceName)
-        return HttpResponse(json.dumps("Slice updated"), mimetype='application/javascript')
+        return HttpResponse(json.dumps("Slice updated"), content_type='application/javascript')
 
 def addNetwork(name,template,sliceName):
 	networkTemplate=NetworkTemplate.objects.get(name=template)
@@ -237,7 +237,7 @@
                 #print slice, slice.id
                 sliceToDel=Slice(name=sliceName, id=slice.id)
                 sliceToDel.delete()
-                return HttpResponse(json.dumps("Slice deleted"), mimetype='application/javascript')
+                return HttpResponse(json.dumps("Slice deleted"), content_type='application/javascript')
 
 class TenantAddOrRemoveSliverView(View):
     """ Add or remove slivers from a Slice
@@ -283,7 +283,7 @@
         else:
             return HttpResponseServerError("Unknown actionToDo %s" % actionToDo)
 
-        return HttpResponse(json.dumps(sitesChanged), mimetype='application/javascript')
+        return HttpResponse(json.dumps(sitesChanged), content_type='application/javascript')
 
     def get(self, request, *args, **kwargs):
         request.POST = request.GET
@@ -300,7 +300,7 @@
         ip = request.GET.get("ip", get_ip(request))
         sites = tenant_pick_sites(request.user, user_ip=ip, count=0, slice=slice)
         sites = [x.name for x in sites]
-        return HttpResponse(json.dumps(sites), mimetype='application/javascript')
+        return HttpResponse(json.dumps(sites), content_type='application/javascript')
 
 def siteSortKey(site, slice=None, count=None, lat=None, lon=None):
     # try to pick a site we're already using
@@ -336,4 +336,4 @@
 
 class TenantViewData(View):
     def get(self, request, **kwargs):
-        return HttpResponse(json.dumps(getTenantSliceInfo(request.user, True)), mimetype='application/javascript')
+        return HttpResponse(json.dumps(getTenantSliceInfo(request.user, True)), content_type='application/javascript')
