saving backbonejs model with django backend

68 views
Skip to first unread message

Eddilbert Macharia

unread,
May 31, 2014, 1:26:38 AM5/31/14
to django...@googlegroups.com
Hi Guys,

how do i save a backbone model in the database ??

here is how i have tried it and the errors i am getting, please assist ,
/*
*
*
* the field model
*
*
*/
    var fieldModel=Backbone.Model.extend({
        defaults:{
            name:'',
            type:'',
            placeholder:'',
        },
        urlRoot:'form',
        initialize:function(){
            this.on('invalid',function(model,error){
                alert(error);
            })
        },
        validate:function(attrs){
            if(! $.trim(attrs.name) || ! $.trim(attrs.type)){
                return 'Name can not be blank'
            }
        }

    });


/*
*
*
* the collection of fields
*
*
*/
 
    var fieldCollections=Backbone.Collection.extend({
        model:fieldModel,
        urlRoot:'form',
    });


/*
*
*
* The collection of all elements view
*
*
*/
    var allFieldsView=Backbone.View.extend({
        el:'#designArea',
        //template:,
        initialize:function(){
            this.render();
            this.listenTo(this.collection,'add',this.displayOneField)
        },
        events:{
            'click #saveDesignedForm':'saveDesignedForm',           
        },
        render:function(){
            this.collection.each(this.displayOneField,this);
            return this;

        },
        // display each field
        displayOneField:function(field){
            // create a fields view based on each model that is in the collection
            var oneFieldDisplay =new fieldView({model:field});
            // append the each models fieldview
            // using fieldview created using the model get the el method
            this.$el.find('#formDesign').append(oneFieldDisplay.render().el);
        },
       

        // save all the models in a collection
        saveDesignedForm:function(){
            this.collection.each(function(element){
                element.save()
            })
        }
       
    });

the url.py has the following path

  url(r'^form-save',saveFormDesign),

from the chrome console i get the following request payload on save
  1. {"name":"default name","type":"text","placeholder":"the placeholder goes here"}

and this is my view

@csrf_exempt
def saveFormDesign(request):
    ClientData.objects.create(name='demo',fields=request)
    return HttpResponse(request)

here is my stack trace
ProgrammingError at /dataapp/form
can't adapt type 'WSGIRequest'

Request Method: POST
Request URL: http://localhost:8000/dataapp/form
Django Version: 1.6.3
Python Executable: C:\Python27\python.exe
Python Version: 2.7.6
Python Path: ['C:\\projects', 'C:\\Python27\\lib\\site-packages\\setuptools-3.2-py2.7.egg', 'C:\\Python27\\lib\\site-packages\\pip-1.5.4-py2.7.egg', 'C:\\Windows\\system32\\python27.zip', 'C:\\Python27\\DLLs', 'C:\\Python27\\lib', 'C:\\Python27\\lib\\plat-win', 'C:\\Python27\\lib\\lib-tk', 'C:\\Python27', 'C:\\Python27\\lib\\site-packages']
Server time: Sat, 31 May 2014 08:19:45 +0300
Installed Applications:
('django.contrib.admin',
 'django.contrib.auth',
 'django.contrib.contenttypes',
 'django.contrib.sessions',
 'django.contrib.messages',
 'django.contrib.staticfiles',
 'south',
 'DataApp',
 'django_hstore',
 'tastypie')
Installed Middleware:
('django.contrib.sessions.middleware.SessionMiddleware',
 'django.middleware.common.CommonMiddleware',
 'django.middleware.csrf.CsrfViewMiddleware',
 'django.contrib.auth.middleware.AuthenticationMiddleware',
 'django.contrib.messages.middleware.MessageMiddleware',
 'django.middleware.clickjacking.XFrameOptionsMiddleware')

Traceback:
File "C:\Python27\lib\site-packages\django\core\handlers\base.py" in get_response
  114.                     response = wrapped_callback(request, *callback_args, **callback_kwargs)
File "C:\Python27\lib\site-packages\django\views\decorators\csrf.py" in wrapped_view
  57.         return view_func(*args, **kwargs)
File "C:\projects\DataApp\views.py" in saveFormDesign
  253.     ClientData.objects.create(name='demo',fields=request)
File "C:\Python27\lib\site-packages\django\db\models\manager.py" in create
  157.         return self.get_queryset().create(**kwargs)
File "C:\Python27\lib\site-packages\django\db\models\query.py" in create
  319.         obj.save(force_insert=True, using=self.db)
File "C:\Python27\lib\site-packages\django\db\models\base.py" in save
  545.                        force_update=force_update, update_fields=update_fields)
File "C:\Python27\lib\site-packages\django\db\models\base.py" in save_base
  573.             updated = self._save_table(raw, cls, force_insert, force_update, using, update_fields)
File "C:\Python27\lib\site-packages\django\db\models\base.py" in _save_table
  654.             result = self._do_insert(cls._base_manager, using, fields, update_pk, raw)
File "C:\Python27\lib\site-packages\django\db\models\base.py" in _do_insert
  687.                                using=using, raw=raw)
File "C:\Python27\lib\site-packages\django\db\models\manager.py" in _insert
  232.         return insert_query(self.model, objs, fields, **kwargs)
File "C:\Python27\lib\site-packages\django\db\models\query.py" in insert_query
  1511.     return query.get_compiler(using=using).execute_sql(return_id)
File "C:\Python27\lib\site-packages\django\db\models\sql\compiler.py" in execute_sql
  903.             cursor.execute(sql, params)
File "C:\Python27\lib\site-packages\django\db\backends\util.py" in execute
  69.             return super(CursorDebugWrapper, self).execute(sql, params)
File "C:\Python27\lib\site-packages\django\db\backends\util.py" in execute
  53.                 return self.cursor.execute(sql, params)
File "C:\Python27\lib\site-packages\django\db\utils.py" in __exit__
  99.                 six.reraise(dj_exc_type, dj_exc_value, traceback)
File "C:\Python27\lib\site-packages\django\db\backends\util.py" in execute
  53.                 return self.cursor.execute(sql, params)

Exception Type: ProgrammingError at /dataapp/form
Exception Value: can't adapt type 'WSGIRequest'
Request information:
GET: No GET data

POST: No POST data

FILES: No FILES data

COOKIES:
csrftoken = 'LQEqpLJNW3g5IaGcMGa3nRwEnWJP2Eui'
sessionid = '01ekwy6yrmq27q8xs784a8os6uxep8i0'

META:
TMP = 'C:\\Users\\EDDMASH\\AppData\\Local\\Temp'
COMPUTERNAME = 'EDDMASH-PC'
wsgi.multiprocess = False
RUN_MAIN = 'true'
HTTP_REFERER = 'http://localhost:8000/dataapp/form-design'
USERDOMAIN = 'EDDMASH-PC'
SERVER_PROTOCOL = 'HTTP/1.1'
SERVER_SOFTWARE = 'WSGIServer/0.1 Python/2.7.6'
PSMODULEPATH = 'C:\\Windows\\system32\\WindowsPowerShell\\v1.0\\Modules\\'
SCRIPT_NAME = u''
COMMONPROGRAMFILES = 'C:\\Program Files (x86)\\Common Files'
PROCESSOR_IDENTIFIER = 'Intel64 Family 6 Model 42 Stepping 7, GenuineIntel'
REQUEST_METHOD = 'POST'
PROGRAMFILES = 'C:\\Program Files (x86)'
PROCESSOR_REVISION = '2a07'
PROJ_LIB = 'C:\\OSGeo4W\\share\\proj'
QUERY_STRING = ''
SYSTEMROOT = 'C:\\Windows'
HTTP_ORIGIN = 'http://localhost:8000'
PROGRAMFILES(X86) = 'C:\\Program Files (x86)'
CONTENT_LENGTH = '79'
HTTP_USER_AGENT = 'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/35.0.1916.114 Safari/537.36'
HTTP_CONNECTION = 'keep-alive'
HTTP_COOKIE = 'sessionid=01ekwy6yrmq27q8xs784a8os6uxep8i0; csrftoken=LQEqpLJNW3g5IaGcMGa3nRwEnWJP2Eui'
TEMP = 'C:\\Users\\EDDMASH\\AppData\\Local\\Temp'
REMOTE_ADDR = '127.0.0.1'
COMMONPROGRAMFILES(X86) = 'C:\\Program Files (x86)\\Common Files'
PROCESSOR_ARCHITECTURE = 'x86'
AGSDESKTOPJAVA = 'C:\\Program Files (x86)\\ArcGIS\\Desktop10.0\\'
wsgi.url_scheme = 'http'
ALLUSERSPROFILE = 'C:\\ProgramData'
SERVER_PORT = '8000'
LOCALAPPDATA = 'C:\\Users\\EDDMASH\\AppData\\Local'
HOMEPATH = '\\Users\\EDDMASH'
PROCESSOR_LEVEL = '6'
PROGRAMW6432 = 'C:\\Program Files'
USERNAME = 'EDDMASH'
GDAL_DATA = 'C:\\Program Files\\PostgreSQL\\9.3\\gdal-data'
LOGONSERVER = '\\\\EDDMASH-PC'
PROMPT = '$P$G'
COMSPEC = 'C:\\Windows\\system32\\cmd.exe'
HTTP_X_REQUESTED_WITH = 'XMLHttpRequest'
PROGRAMDATA = 'C:\\ProgramData'
HTTP_ACCEPT = 'application/json, text/javascript, */*; q=0.01'
wsgi.multithread = True
CSRF_COOKIE = u'LQEqpLJNW3g5IaGcMGa3nRwEnWJP2Eui'
PATH = 'C:\\Windows\\system32;C:\\Windows;C:\\Windows\\System32\\Wbem;C:\\Windows\\System32\\WindowsPowerShell\\v1.0\\;C:\\xampp\\php;C:\\ProgramData\\Composer\\bin;C:\\Program Files (x86)\\Toshiba\\Bluetooth Toshiba Stack\\sys\\;C:\\Program Files (x86)\\Toshiba\\Bluetooth Toshiba Stack\\sys\\x64\\;C:\\Python27\\;C:\\Python27\\Lib\\site-packages\\;C:\\Python27\\Scripts\\;;C:\\Python27;C:\\OSGeo4W\\bin;C:\\Program Files\\PostgreSQL\\9.3\\bin\\;C:\\Ruby200-x64\\bin\\;C:\\Program Files\\nodejs\\;C:\\RailsInstaller\\Git\\cmd;C:\\RailsInstaller\\Ruby1.9.3\\bin;C:\\Users\\EDDMASH\\AppData\\Roaming\\npm'
wsgi.input = <socket._fileobject object at 0x03383AF0>
wsgi.errors = <open file '<stderr>', mode 'w' at 0x003760D0>
HTTP_HOST = 'localhost:8000'
SESSIONNAME = 'Console'
PATHEXT = '.COM;.EXE;.BAT;.CMD;.VBS;.VBE;.JS;.JSE;.WSF;.WSH;.MSC'
PATH_INFO = u'/dataapp/form'
FP_NO_HOST_CHECK = 'NO'
WINDIR = 'C:\\Windows'
wsgi.file_wrapper = ''
HTTP_ACCEPT_ENCODING = 'gzip,deflate,sdch'
wsgi.version =
HOMEDRIVE = 'C:'
APPDATA = 'C:\\Users\\EDDMASH\\AppData\\Roaming'
SERVER_NAME = 'drupal.themes'
wsgi.run_once = False
REMOTE_HOST = ''
SYSTEMDRIVE = 'C:'
GATEWAY_INTERFACE = 'CGI/1.1'
HTTP_ACCEPT_LANGUAGE = 'en-GB,en-US;q=0.8,en;q=0.6'
NUMBER_OF_PROCESSORS = '4'
VBOX_INSTALL_PATH = 'C:\\Program Files\\Oracle\\VirtualBox\\'
DJANGO_SETTINGS_MODULE = 'projects.settings'
CONTENT_TYPE = 'application/json'
PROCESSOR_ARCHITEW6432 = 'AMD64'
COMMONPROGRAMW6432 = 'C:\\Program Files\\Common Files'
OS = 'Windows_NT'
PUBLIC = 'C:\\Users\\Public'
USERPROFILE = 'C:\\Users\\EDDMASH'

Settings:
Using settings module projects.settings
USE_L10N = True
USE_THOUSAND_SEPARATOR = False
CSRF_COOKIE_SECURE = False
LANGUAGE_CODE = 'en-us'
ROOT_URLCONF = 'projects.urls'
MANAGERS =
BASE_DIR = 'C:\\projects'
DEFAULT_CHARSET = 'utf-8'
SESSION_SERIALIZER = 'django.contrib.sessions.serializers.JSONSerializer'
STATIC_ROOT = None
ALLOWED_HOSTS = []
MESSAGE_STORAGE = 'django.contrib.messages.storage.fallback.FallbackStorage'
EMAIL_SUBJECT_PREFIX = '[Django] '
FILE_UPLOAD_PERMISSIONS = None
STATICFILES_FINDERS =
SESSION_CACHE_ALIAS = 'default'
SESSION_COOKIE_DOMAIN = None
SESSION_COOKIE_NAME = 'sessionid'
ADMIN_FOR =
TIME_INPUT_FORMATS =
DATABASES = {'default': {'ENGINE': 'django.db.backends.postgresql_psycopg2', 'AUTOCOMMIT': True, 'ATOMIC_REQUESTS': False, 'NAME': 'dataapp', 'TEST_MIRROR': None, 'OPTIONS': {}, 'CONN_MAX_AGE': 0, 'TIME_ZONE': 'UTC', 'TEST_COLLATION': None, 'TEST_CHARSET': None, 'HOST': '', 'USER': 'postgres', 'TEST_NAME': None, 'PASSWORD': u'********************', 'PORT': ''}}
SERVER_EMAIL = 'root@localhost'
FILE_UPLOAD_HANDLERS =
DEFAULT_CONTENT_TYPE = 'text/html'
APPEND_SLASH = True
FIRST_DAY_OF_WEEK = 0
DATABASE_ROUTERS = []
YEAR_MONTH_FORMAT = 'F Y'
STATICFILES_STORAGE = 'django.contrib.staticfiles.storage.StaticFilesStorage'
CACHES = {'default': {'BACKEND': 'django.core.cache.backends.locmem.LocMemCache'}}
SESSION_COOKIE_PATH = '/'
MIDDLEWARE_CLASSES =
USE_I18N = True
THOUSAND_SEPARATOR = ','
SECRET_KEY = u'********************'
LANGUAGE_COOKIE_NAME = 'django_language'
DEFAULT_INDEX_TABLESPACE = ''
TRANSACTIONS_MANAGED = False
LOGGING_CONFIG = 'django.utils.log.dictConfig'
SEND_BROKEN_LINK_EMAILS = False
TEMPLATE_LOADERS =
WSGI_APPLICATION = 'projects.wsgi.application'
TEMPLATE_DEBUG = True
X_FRAME_OPTIONS = 'SAMEORIGIN'
CSRF_COOKIE_NAME = 'csrftoken'
FORCE_SCRIPT_NAME = None
USE_X_FORWARDED_HOST = False
SIGNING_BACKEND = 'django.core.signing.TimestampSigner'
SESSION_COOKIE_SECURE = False
CSRF_COOKIE_DOMAIN = None
FILE_CHARSET = 'utf-8'
DEBUG = True
SESSION_FILE_PATH = None
DEFAULT_FILE_STORAGE = 'django.core.files.storage.FileSystemStorage'
INSTALLED_APPS =
LANGUAGES =
COMMENTS_ALLOW_PROFANITIES = False
STATICFILES_DIRS =
PREPEND_WWW = False
SECURE_PROXY_SSL_HEADER = None
SESSION_COOKIE_HTTPONLY = True
DEBUG_PROPAGATE_EXCEPTIONS = False
MONTH_DAY_FORMAT = 'F j'
LOGIN_URL = '/accounts/login/'
SESSION_EXPIRE_AT_BROWSER_CLOSE = False
TIME_FORMAT = 'P'
AUTH_USER_MODEL = 'auth.User'
DATE_INPUT_FORMATS =
AUTHENTICATION_BACKENDS = 'django.contrib.auth.backends.ModelBackend'
EMAIL_HOST_PASSWORD = u'********************'
PASSWORD_RESET_TIMEOUT_DAYS = u'********************'
CACHE_MIDDLEWARE_ALIAS = 'default'
SESSION_SAVE_EVERY_REQUEST = False
NUMBER_GROUPING = 0
SESSION_ENGINE = 'django.contrib.sessions.backends.db'
CSRF_FAILURE_VIEW = 'django.views.csrf.csrf_failure'
CSRF_COOKIE_PATH = '/'
LOGIN_REDIRECT_URL = '/accounts/profile/'
DECIMAL_SEPARATOR = '.'
IGNORABLE_404_URLS =
LOCALE_PATHS =
TEMPLATE_STRING_IF_INVALID = ''
LOGOUT_URL = '/accounts/logout/'
EMAIL_USE_TLS = False
FIXTURE_DIRS =
EMAIL_HOST = 'localhost'
DATE_FORMAT = 'N j, Y'
MEDIA_ROOT = ''
DEFAULT_EXCEPTION_REPORTER_FILTER = 'django.views.debug.SafeExceptionReporterFilter'
ADMINS =
FORMAT_MODULE_PATH = None
DEFAULT_FROM_EMAIL = 'webmaster@localhost'
MEDIA_URL = ''
DATETIME_FORMAT = 'N j, Y, P'
TEMPLATE_DIRS =
DISALLOWED_USER_AGENTS =
ALLOWED_INCLUDE_ROOTS =
LOGGING = {}
SHORT_DATE_FORMAT = 'm/d/Y'
TEST_RUNNER = 'django.test.runner.DiscoverRunner'
CACHE_MIDDLEWARE_KEY_PREFIX = u'********************'
TIME_ZONE = 'UTC'
FILE_UPLOAD_MAX_MEMORY_SIZE = 2621440
EMAIL_BACKEND = 'django.core.mail.backends.smtp.EmailBackend'
DEFAULT_TABLESPACE = ''
TEMPLATE_CONTEXT_PROCESSORS =
SESSION_COOKIE_AGE = 1209600
SETTINGS_MODULE = 'projects.settings'
USE_ETAGS = False
LANGUAGES_BIDI =
FILE_UPLOAD_TEMP_DIR = None
INTERNAL_IPS =
STATIC_URL = '/static/'
EMAIL_PORT = 25
USE_TZ = True
SHORT_DATETIME_FORMAT = 'm/d/Y P'
PASSWORD_HASHERS = u'********************'
ABSOLUTE_URL_OVERRIDES = {}
CACHE_MIDDLEWARE_SECONDS = 600
CSRF_COOKIE_HTTPONLY = False
DATETIME_INPUT_FORMATS =
EMAIL_HOST_USER = ''
PROFANITIES_LIST = u'********************'

You're seeing this error because you have DEBUG = True in your
Django settings file. Change that to False, and Django will
display a standard 500 page.


Eddilbert Macharia

unread,
Jun 1, 2014, 4:23:42 AM6/1/14
to django...@googlegroups.com
Hi,

For anyone interested or stuck as i was this is what i did in my view and it started working,its not working optimamly as i wanted it to but its a working progress but its atleast saving to the database

import json

@csrf_exempt
def saveFormDesign(request):
    data=request.body
    t=json.loads(data)
    ClientData.objects.create(name='demo',fields=t)
    return HttpResponse(t)


Regards,
Reply all
Reply to author
Forward
0 new messages