No project description provided
Project description
django-admin-shell
Django application can execute python code in your project’s environment on django admin site. You can use similar as python manage shell without reloading the environment.
- Tested by tox with:
Python :2.7, 3.6, 3.8
Django : 1.10, 1.11, 2.0, 2.1, 2.2, 3.0, 3.1, 3.2
- Require:
Django >= 1.10
- Tested on browsers
OK - Chromium 89 - Ubuntu 18.04
OK - Firefox 87.0 - Ubuntu 18.04
OK - Chromium 79.0 - Ubuntu 18.04
OK - Firefox 72.0.2 - Ubuntu 18.04
OK - Firefox 50.1.0 - Ubuntu 14.04
OK - Firefox 31.1 - CentOS 6.4
OK - Chromium 53.0 - Ubuntu 14.04
OK - Microsoft Edge 38 - Windows 10
OK - Internet Explorer 11.0 - Windows 8.1
OK - Internet Explorer 10.0 - Windows 7
OK - Internet Explorer 9.0 - Windows 7
ERR - Internet Explorer 8.0 - Windows 7 (javascripts not working / console work properly)
Screens
Shell in action
Install
Install:
pip install django-admin-shell or pip install git+https://github.com/djk2/django-admin-shell.git or after download zip pip install django-admin-shell.zip
Add django_admin_shell to your INSTALLED_APPS setting
settings.py
INSTALLED_APPS = [ ... 'django_admin_shell', ... ]
Add the django_admin_shell urls to your root url patterns (above admin/) :
urls.py
urlpatterns = [ url(r'^admin/shell/', include('django_admin_shell.urls')), ... url(r'^admin/', admin.site.urls), ]
Usage
shell is available on url: /admin/shell
On default settings user must be authenticated to django admin site and User must have superuser permission and DEBUG mode must be set on True.
Demo
Try django-admin-shell using simple demo app:
Clone project
Go to demo directory:
cd django-admin-shell/demo
Install requirements:
pip install -r requirements.txt
Run demo project
./manage.py runserver
Go to “http://127.0.0.1:8000/admin/shell” and login to admin user with password admin
Settings
ADMIN_SHELL_ENABLE
type : bool
default : True
If shell is enable or disable. When application is disable then url: /admin/shell return Http404 Not found
ADMIN_SHELL_ONLY_DEBUG_MODE
type : bool
default : True
If flag is set on True, then shell is available only in DEBUG mode.
If debug mode is required and debug mode is disabled then url: /admin/shell will return Http 403 Forbidden
ADMIN_SHELL_ONLY_FOR_SUPERUSER
type : bool
default : True
If flag is set on True, then shell is available only for user with superuser permission.
If superuser is required and user not have permission then url: /admin/shell will return Http 403 Forbidden
ADMIN_SHELL_OUTPUT_SIZE
type : integer
default : 250
Flag determines how many outputs can be remember.
ADMIN_SHELL_SESSION_KEY
type : string
default : django_admin_shell_output
Name for key in session where is stored history last executed codes.
ADMIN_SHELL_IMPORT_DJANGO
type : bool
default : True
If flag is set on True, then useful libraries and packages from Django will be automatically imported to shell. For example: from django.conf import settings, so in shell you have directly access to attributes from this module (e.g settings.INSTALLED_APPS). List of automatically imported modules is displayed on top of console (screen below). If you want disable auto import for django packages, set this flag to False.
Nont: If during import occurred error `ImportError` then this module will be omitted.
ADMIN_SHELL_IMPORT_MODELS
type : bool
default : True
This flag is similar to ADMIN_SHELL_IMPORT_DJANGO but regarding auto import of models from all registered applications. If flag is set on True, then models from all apps will be automatically imported to shell. For example: from django.contrib.auth.models import Permission, Group, User, so in shell you have directly access to this classes. List of automatically imported models is displayed on top of console. If you want disable auto import for models, set this flag to False.
Nont: If during import occurred error `ImportError` then this module will be omitted.
Code examples
show django settings:
from django.conf import settings for key in dir(settings): val = getattr(settings, key, None) print(key, "=", val)
run command in operating system and take output:
import os os.system('date > /tmp/admin_console.tmp') os.system('echo ------- >> /tmp/admin_console.tmp') os.system('who >> /tmp/admin_console.tmp') os.system('echo ------- >> /tmp/admin_console.tmp') os.system('ps aux | grep python >> /tmp/admin_console.tmp') with open('/tmp/admin_console.tmp', 'r') as f: print(f.read())
run big python code (get python source from website):
import requests req = requests.get('http://foo.bar.com/example.py') if req.status_code == 200: code = req.text print(code, '\n------------\n') exec(code)
Useful for me:
Similar projects:
Project details
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Hashes for django_admin_shell-1.0.0-py2.py3-none-any.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 1bb96a6304a838a78d371397d100aa327cc8e19622d123fa51bd4be5bbf739b7 |
|
MD5 | 348b37a3c96334c0ba30723a941b2aaa |
|
BLAKE2b-256 | dc9352316566d7e7d8ba37da83b5f8756001c257fa99e5d329d37701dd3c681d |