0
votes

I am trying to implement the django rest framework in my current project. The api engine is working with no security. I am trying to follow the steps given in the authentication page of django rest framework to add the authentication.

When I am adding the following section to the settings.py, I don't get any error:

REST_FRAMEWORK = {
'DEFAULT_AUTHENTICATION_CLASSES': [
    'rest_framework.authentication.TokenAuthentication',
]
}

but when I am adding 'rest_framework.authtoken' to the INSTALLED_APPS, and run the server,

I get the follwing message:

You have 2 unapplied migration(s). Your project may not work properly until you apply the migrations for app(s): authtoken. Run 'python manage.py migrate' to apply them.

Then I tried running:

python manage.py migrate

and I get the following errors:

(raiotic-venv) username@username-VirtualBox:~/Servers/Repositories/raiotic-venv/raiotic$ python manage.py migrate Operations to perform: Apply all migrations: MainApp, admin, auth, authtoken, contenttypes, sessions Running migrations: Applying authtoken.0001_initial...Traceback (most recent call last): File "/home/username/venv/lib/python3.6/site-packages/django/db/backends/utils.py", line 82, in _execute return self.cursor.execute(sql) File "/home/username/venv/lib/python3.6/site-packages/django/db/backends/sqlite3/base.py", line 381, in execute return Database.Cursor.execute(self, query) sqlite3.OperationalError: attempt to write a readonly database

The above exception was the direct cause of the following exception:

Traceback (most recent call last): File "manage.py", line 21, in main() File "manage.py", line 17, in main execute_from_command_line(sys.argv) File "/home/username/venv/lib/python3.6/site-packages/django/core/management/init.py", line 381, in execute_from_command_line utility.execute() File "/home/username/venv/lib/python3.6/site-packages/django/core/management/init.py", line 375, in execute self.fetch_command(subcommand).run_from_argv(self.argv) File "/home/username/venv/lib/python3.6/site-packages/django/core/management/base.py", line 323, in run_from_argv self.execute(*args, **cmd_options) File "/home/username/venv/lib/python3.6/site-packages/django/core/management/base.py", line 364, in execute output = self.handle(*args, **options) File "/home/username/venv/lib/python3.6/site-packages/django/core/management/base.py", line 83, in wrapped res = handle_func(*args, **kwargs) File "/home/username/venv/lib/python3.6/site-packages/django/core/management/commands/migrate.py", line 234, in handle fake_initial=fake_initial, File "/home/username/venv/lib/python3.6/site-packages/django/db/migrations/executor.py", line 117, in migrate state = self._migrate_all_forwards(state, plan, full_plan, fake=fake, fake_initial=fake_initial) File "/home/username/venv/lib/python3.6/site-packages/django/db/migrations/executor.py", line 147, in _migrate_all_forwards state = self.apply_migration(state, migration, fake=fake, fake_initial=fake_initial) File "/home/username/venv/lib/python3.6/site-packages/django/db/migrations/executor.py", line 245, in apply_migration state = migration.apply(state, schema_editor) File "/home/username/venv/lib/python3.6/site-packages/django/db/migrations/migration.py", line 124, in apply operation.database_forwards(self.app_label, schema_editor, old_state, project_state) File "/home/username/venv/lib/python3.6/site-packages/django/db/migrations/operations/models.py", line 92, in database_forwards schema_editor.create_model(model) File "/home/username/venv/lib/python3.6/site-packages/django/db/backends/base/schema.py", line 307, in create_model self.execute(sql, params or None) File "/home/username/venv/lib/python3.6/site-packages/django/db/backends/base/schema.py", line 137, in execute cursor.execute(sql, params) File "/home/username/venv/lib/python3.6/site-packages/django/db/backends/utils.py", line 99, in execute return super().execute(sql, params) File "/home/username/venv/lib/python3.6/site-packages/django/db/backends/utils.py", line 67, in execute return self._execute_with_wrappers(sql, params, many=False, executor=self._execute) File "/home/username/venv/lib/python3.6/site-packages/django/db/backends/utils.py", line 76, in _execute_with_wrappers return executor(sql, params, many, context) File "/home/username/venvlib/python3.6/site-packages/django/db/backends/utils.py", line 84, in _execute return self.cursor.execute(sql, params) File "/home/username/venvlib/python3.6/site-packages/django/db/utils.py", line 89, in exit raise dj_exc_value.with_traceback(traceback) from exc_value File "/home/username/venvlib/python3.6/site-packages/django/db/backends/utils.py", line 82, in _execute return self.cursor.execute(sql) File "/home/username/venvlib/python3.6/site-packages/django/db/backends/sqlite3/base.py", line 381, in execute return Database.Cursor.execute(self, query) django.db.utils.OperationalError: attempt to write a readonly database

1

1 Answers

0
votes

try changing the permissions to the db.sqlite3 file it might be that the mode is read only for the user you are running as having no permissions to write to the file.

do

ls -al db.sqlite3
chmod a+w db.sqlite3
python manage.py migrate