Drop-in replacement of Django admin comes with lots of goodies, fully extensible with plugin support, pretty UI based on Twitter Bootstrap.

Overview

Xadmin Build Status

Drop-in replacement of Django admin comes with lots of goodies, fully extensible with plugin support, pretty UI based on Twitter Bootstrap.

Live Demo

http://demo.xadmin.io

  • User: admin
  • Password: admin

Features

  • Drop-in replacement of Django admin
  • Twitter Bootstrap based UI with theme support
  • Extensible with plugin support
  • Better filter, date range, number range, etc.
  • Built-in data export with xls, csv, xml and json format
  • Dashboard page with widget support
  • In-site bookmarking
  • Full CRUD methods

Screenshots

Actions
Filter
Chart
Export Data
Edit inline

Get Started

Install

Xadmin is best installed via PyPI. To install the latest version, run:

pip install xadmin

or Install from github source:

pip install git+git://github.com/sshwsfc/xadmin.git

Install from github source for Django 2.0:

pip install git+git://github.com/sshwsfc/[email protected]

Install Requires

Documentation

Changelogs

0.6.0

  • Compact with Django1.9.
  • Add Clock Picker widget for timepicker.
  • Fixed some userface errors.

0.5.0

  • Update fontawesome to 4.0.3
  • Update javascript files to compact fa icons new version
  • Update tests for the new instance method of the AdminSite class
  • Added demo graphs
  • Added quickfilter plugin.
  • Adding apps_icons with same logic of apps_label_title.
  • Add xlsxwriter for big data export.
  • Upgrade reversion models admin list page.
  • Fixed reverse many 2 many lookup giving FieldDoesNotExist error.
  • Fixed user permission check in inline model.

Detail

Online Group

  • QQ群 : 282936295

Run Demo Locally

cd demo_app
./manage.py migrate
./manage.py runserver

Open http://127.0.0.1:8000 in your browser, the admin user password is admin

Help

Help Translate : http://trans.xadmin.io

Issues
  • pip install的时候提示字符编码错误

    pip install的时候提示字符编码错误

    我的django版本是1.9,Python版本是3.5 windows10系统

    C:\Users\Hao\Project\django\xadmin>pip install django-xadmin
    Collecting django-xadmin
      Using cached django-xadmin-0.5.0.tar.gz
        Complete output from command python setup.py egg_info:
        Traceback (most recent call last):
          File "<string>", line 1, in <module>
          File "C:\Users\Hao\AppData\Local\Temp\pip-build-tp9q6ucv\django-xadmin\setup.py", line 11, in <module>
            long_description=open('README.rst').read(),
        UnicodeDecodeError: 'gbk' codec can't decode byte 0xa4 in position 3256: illegal multibyte sequence
    
        ----------------------------------------
    Command "python setup.py egg_info" failed with error code 1 in C:\Users\Hao\AppData\Local\Temp\pip-build-tp9q6ucv\django-xadmin\
    
    opened by awmleer 16
  • Widgets are not loading correctly when inline extra = 0

    Widgets are not loading correctly when inline extra = 0

    Hi there,

    Somehow when I use inlines and define extra = 0 for my inline, the widgets for instance, the calendar and the cool dropdowns with search functionality stopped working, apparently they do not load correctly, but if I change to extra = 1 everything works fine again.

    Best, Dennis.

    opened by djheroez 9
  • 不支持Django==1.11

    不支持Django==1.11

    环境python 2.7.13 Django==1.11

    报错信息

    Traceback (most recent call last):
      File "D:\Python2\lib\site-packages\django\utils\autoreload.py", line 227, in wrapper
        fn(*args, **kwargs)
      File "D:\Python2\lib\site-packages\django\core\management\commands\runserver.py", line 117, in inner_run
        autoreload.raise_last_exception()
      File "D:\Python2\lib\site-packages\django\utils\autoreload.py", line 250, in raise_last_exception
        six.reraise(*_exception)
      File "D:\Python2\lib\site-packages\django\utils\autoreload.py", line 227, in wrapper
        fn(*args, **kwargs)
      File "D:\Python2\lib\site-packages\django\__init__.py", line 27, in setup
        apps.populate(settings.INSTALLED_APPS)
      File "D:\Python2\lib\site-packages\django\apps\registry.py", line 116, in populate
        app_config.ready()
      File "D:\python_project\serverlist\xadmin\apps.py", line 14, in ready
        self.module.autodiscover()
      File "D:\python_project\serverlist\xadmin\__init__.py", line 27, in autodiscover
        from xadmin.views import register_builtin_views
      File "D:\python_project\serverlist\xadmin\views\__init__.py", line 5, in <module>
        from edit import CreateAdminView, UpdateAdminView, ModelFormAdminView
      File "D:\python_project\serverlist\xadmin\views\edit.py", line 16, in <module>
        from xadmin import widgets
      File "D:\python_project\serverlist\xadmin\widgets.py", line 6, in <module>
        from django.forms.widgets import RadioFieldRenderer, RadioChoiceInput
    ImportError: cannot import name RadioFieldRenderer
    
    opened by pc10201 7
  • Django 1.7 problem(AppRegistryNotReady)

    Django 1.7 problem(AppRegistryNotReady)

    Python 2.7

    My Url:

    from django.conf.urls import patterns, include, url
    import xadmin
    
    xadmin.autodiscover()
    
    urlpatterns = patterns('',
        url(r'^xadmin/', include(xadmin.site.urls))
    ) 
    

    My settings:

    INSTALLED_APPS = (
        'django.contrib.admin',
        'django.contrib.auth',
        'django.contrib.contenttypes',
        'django.contrib.sessions',
        'django.contrib.messages',
        'django.contrib.staticfiles',
        'xadmin',
        'crispy_forms'
    )
    

    Exception on runserver:

    /env/bin/python /path/manage.py runserver 8000
    Traceback (most recent call last):
      File "/path/manage.py", line 12, in <module>
        execute_from_command_line(sys.argv)
      File "/env/local/lib/python2.7/site-packages/django/core/management/__init__.py", line 385, in execute_from_command_line
        utility.execute()
      File "/env/local/lib/python2.7/site-packages/django/core/management/__init__.py", line 354, in execute
        django.setup()
      File "/env/local/lib/python2.7/site-packages/django/__init__.py", line 21, in setup
        apps.populate(settings.INSTALLED_APPS)
      File "/env/local/lib/python2.7/site-packages/django/apps/registry.py", line 108, in populate
        app_config.import_models(all_models)
      File "/env/local/lib/python2.7/site-packages/django/apps/config.py", line 197, in import_models
        self.models_module = import_module(models_module_name)
      File "/usr/lib/python2.7/importlib/__init__.py", line 37, in import_module
        __import__(name)
      File "/env/local/lib/python2.7/site-packages/xadmin/models.py", line 19, in <module>
        AUTH_USER_MODEL = django.contrib.auth.get_user_model()
      File "/env/local/lib/python2.7/site-packages/django/contrib/auth/__init__.py", line 136, in get_user_model
        return django_apps.get_model(settings.AUTH_USER_MODEL)
      File "/env/local/lib/python2.7/site-packages/django/apps/registry.py", line 199, in get_model
        self.check_models_ready()
      File "/env/local/lib/python2.7/site-packages/django/apps/registry.py", line 131, in check_models_ready
        raise AppRegistryNotReady("Models aren't loaded yet.")
    django.core.exceptions.AppRegistryNotReady: Models aren't loaded yet.
    
    opened by alexsilva 7
  • changelist_view

    changelist_view

    Hi, I user changelist_view method to control which column I want to show in the admin view. Is there any similar method I can call using xadmin? Thanks in advance.

    opened by letspw 7
  • django2.0分支 xadmin.site.register注册之后,后台看不到[已解决,各种缓存的问题]

    django2.0分支 xadmin.site.register注册之后,后台看不到[已解决,各种缓存的问题]

    生产模式,DEBUG = False 使用数据库为mysql python版本为3.5 原admin.py中已经注释掉了 新adminx.py如下: import xadmin from .models import Article class ArticleAdmin(object): pass xadmin.site.register(Article,ArticleAdmin)

    setting.py中也注册了xadmin,如下: INSTALLED_APPS = [ 'django.contrib.admin', 'django.contrib.auth', 'django.contrib.contenttypes', 'django.contrib.sessions', 'django.contrib.messages', 'django.contrib.staticfiles', 'article', 'xadmin', 'crispy_forms', 'reversion', ]

    路径也设置了,在setting.py中。如下: sys.path.insert(0, os.path.join(BASE_DIR, 'extra_apps'))

    在urls.py中,设置了autodiscover,如下: xadmin.autodiscover() urlpatterns = [ path('xadmin/', xadmin.site.urls), ]

    已经makemigrations和migrate了 可以进入后台,但是看不到注册的表。 之前的admin是可以看见的。

    opened by Zerahhah 6
  • demo 无法运行

    demo 无法运行

    按照教程 直接运行报错,希望能够修复,非常感谢

    windows 环境 Python3.6 Django2

    PS D:\360安全浏览器下载\xadmin-master\demo_app> python manage.py runserver Unhandled exception in thread started by <function check_errors.<locals>.wrapper at 0x000001D114703268> Traceback (most recent call last): File "C:\Program Files (x86)\Microsoft Visual Studio\Shared\Python36_64\lib\site-packages\django\utils\autoreload.py", line 225, in wrapper fn(*args, **kwargs) File "C:\Program Files (x86)\Microsoft Visual Studio\Shared\Python36_64\lib\site-packages\django\core\management\commands\runserver.py", line 112, in inner_run autoreload.raise_last_exception() File "C:\Program Files (x86)\Microsoft Visual Studio\Shared\Python36_64\lib\site-packages\django\utils\autoreload.py", line 248, in raise_last_exception raise _exception[1] File "C:\Program Files (x86)\Microsoft Visual Studio\Shared\Python36_64\lib\site-packages\django\core\management\__init__.py", line 327, in execute autoreload.check_errors(django.setup)() File "C:\Program Files (x86)\Microsoft Visual Studio\Shared\Python36_64\lib\site-packages\django\utils\autoreload.py", line 225, in wrapper fn(*args, **kwargs) File "C:\Program Files (x86)\Microsoft Visual Studio\Shared\Python36_64\lib\site-packages\django\__init__.py", line 24, in setup apps.populate(settings.INSTALLED_APPS) File "C:\Program Files (x86)\Microsoft Visual Studio\Shared\Python36_64\lib\site-packages\django\apps\registry.py", line 112, in populate app_config.import_models() File "C:\Program Files (x86)\Microsoft Visual Studio\Shared\Python36_64\lib\site-packages\django\apps\config.py", line 198, in import_models self.models_module = import_module(models_module_name) File "C:\Program Files (x86)\Microsoft Visual Studio\Shared\Python36_64\lib\importlib\__init__.py", line 126, in import_module return _bootstrap._gcd_import(name[level:], package, level) File "<frozen importlib._bootstrap>", line 994, in _gcd_import File "<frozen importlib._bootstrap>", line 971, in _find_and_load File "<frozen importlib._bootstrap>", line 955, in _find_and_load_unlocked File "<frozen importlib._bootstrap>", line 665, in _load_unlocked File "<frozen importlib._bootstrap_external>", line 678, in exec_module File "<frozen importlib._bootstrap>", line 219, in _call_with_frames_removed File "D:\360安全浏览器下载\xadmin-master\demo_app\..\xadmin\models.py", line 8, in <module> from django.core.urlresolvers import NoReverseMatch, reverse ModuleNotFoundError: No module named 'django.core.urlresolvers'

    opened by hyzx86 6
  • 新增xadmin导入导出插件,集成django-import-export,支持多种格式数据导入导出

    新增xadmin导入导出插件,集成django-import-export,支持多种格式数据导入导出

    你好: xadmin有很多实用功能,不过目前只有导出没有导入,很多同学也遇到了和我一样的问题。所以我结合了django-import-export做出了导入功能,顺便做了对应的导出功能(与原有导出不冲突)。 ps:第一次向这么高大上的项目提交代码,我自己也不是纯粹的开发人员,希望管理员能多多指导,万分感谢。 导入导出插件使用方法示例:

    #Use:
    #+++ settings.py +++
    INSTALLED_APPS = (
        ...
        'import_export',
    )
    
    #+++ models.py +++
    from django.db import models
    
    class Foo(models.Model):
        name = models.CharField(max_length=64)
        description = models.TextField()
    
    #+++ adminx.py +++
    import xadmin
    from import_export import resources
    from .models import Foo
    
    class FooResource(resources.ModelResource):
    “”“
    设置导入及导出的Resource类
    ”“”
        class Meta:
            model = Foo
            # fields = ('name', 'description',)
            # exclude = ()
    
    
    @xadmin.sites.register(Foo)
    class FooAdmin(object):
        # 声明import_export_args参数导入和导出的Resource类后,list页面便有导入和导出按钮
        import_export_args = {'import_resource_class': FooResource, 'export_resource_class': FooResource}
    
    opened by zcyuefan 6
  • Need help with the list widget parameters in xadmin

    Need help with the list widget parameters in xadmin

    I have a model which looks like this :

    
    class Change(models.Model):
        Ticket_Number = models.CharField(max_length=100)
        Start_Time = models.DateTimeField(help_text='in EST')
        Change_status_choice = ((1, 'Not Yet Started'), (2, 'In Progress'), (3, 'Partially Completed'),
                                (4, 'Completed'), (5, 'Rescheduled'), (6, 'Cancelled'), (7, 'Reverted'),
                                (8, 'Failed'), (9, 'Duplicate Entry'), (10, 'No change required'),
                                (11, 'Transferred to IPAM'))
        Change_status = models.SmallIntegerField(choices=Change_status_choice, default=1, max_length=50)
    

    Is it possible to display the count of tickets in various Change_status between 2 different times. For example,can I get a list display widget of all changes between 1 Jan 2014 00:00 Hrs AND 20 Jan 2014 2014 00:00 as follows:

    Total=X Completed = Y Cancelled = Z Not Yet Started = R and so on.

    I am hoping that I can add some parameter value to the list widget to display a table like this. Any help in this regard will be greatly appreciated.

    opened by arjunnambiartc 6
  • django2.1:cannot import name 'QUERY_TERMS' from 'django.db.models.sql.constants'

    django2.1:cannot import name 'QUERY_TERMS' from 'django.db.models.sql.constants'

    试了下网上说的方法, 把 from django.db.models.sql.query import LOOKUP_SEP, QUERY_TERMS 改成

    from django.db.models.sql.query import LOOKUP_SEP
    from django.db.models.sql.constants import QUERY_TERMS
    

    还是报错 cannot import name 'QUERY_TERMS' from 'django.db.models.sql.constants'

    opened by rotateX 5
  • xadmin登录是出现TemplateDoesNotExist

    xadmin登录是出现TemplateDoesNotExist

    TemplateDoesNotExist at /xadmin/ xadmin/views/index.html

    。。。

    Template-loader postmortem

    Django tried loading these templates, in this order:

    Using engine django: django.template.loaders.filesystem.Loader: <我的工作路径*-*>\templates\xadmin\views\index.html (Source does not exist)

    opened by boomxy 5
  • LookupError: No installed app with label 'reversion'.

    LookupError: No installed app with label 'reversion'.

    Internal Server Error: /xadmin/ Traceback (most recent call last): File "C:\Users\Lenovo\code\ft\venv\lib\site-packages\django\apps\registry.py", line 155, in get_app_config return self.app_configs[app_label] KeyError: 'reversion'

    During handling of the above exception, another exception occurred:

    Traceback (most recent call last): File "C:\Users\Lenovo\code\ft\venv\lib\site-packages\django\core\handlers\exception.py", line 34, in inner response = get_response(request) File "C:\Users\Lenovo\code\ft\venv\lib\site-packages\django\core\handlers\base.py", line 115, in _get_response response = self.process_exception_by_middleware(e, request) File "C:\Users\Lenovo\code\ft\venv\lib\site-packages\django\core\handlers\base.py", line 113, in _get_response response = wrapped_callback(request, *callback_args, **callback_kwargs) File "C:\Users\Lenovo\code\ft\venv\lib\site-packages\xadmin\sites.py", line 300, in wrapper return self.admin_view(view, cacheable)(*args, **kwargs) File "C:\Users\Lenovo\code\ft\venv\lib\site-packages\django\views\decorators\cache.py", line 44, in _wrapped_view_func response = view_func(request, *args, **kwargs) File "C:\Users\Lenovo\code\ft\venv\lib\site-packages\xadmin\sites.py", line 208, in inner return view(request, *args, **kwargs) File "C:\Users\Lenovo\code\ft\venv\lib\site-packages\xadmin\views\base.py", line 282, in view return handler(request, *args, **kwargs) File "C:\Users\Lenovo\code\ft\venv\lib\site-packages\django\views\decorators\cache.py", line 44, in _wrapped_view_func response = view_func(request, *args, **kwargs) File "C:\Users\Lenovo\code\ft\venv\lib\site-packages\xadmin\views\dashboard.py", line 593, in get return self.template_response('xadmin/views/dashboard.html', self.get_context()) File "C:\Users\Lenovo\code\ft\venv\lib\site-packages\xadmin\views\base.py", line 80, in method return filter_chain(filters, len(filters) - 1, _inner_method, *args, **kwargs) File "C:\Users\Lenovo\code\ft\venv\lib\site-packages\xadmin\views\base.py", line 63, in filter_chain return filter_chain(filters, token - 1, _inner_method, *args, **kwargs) File "C:\Users\Lenovo\code\ft\venv\lib\site-packages\xadmin\views\base.py", line 49, in filter_chain return func() File "C:\Users\Lenovo\code\ft\venv\lib\site-packages\xadmin\views\base.py", line 62, in _inner_method return fm(func if fargs[1] == '' else func(), *args, **kwargs) File "C:\Users\Lenovo\code\ft\venv\lib\site-packages\xadmin\views\base.py", line 74, in _inner_method return func(self, *args, **kwargs) File "C:\Users\Lenovo\code\ft\venv\lib\site-packages\xadmin\views\dashboard.py", line 586, in get_context context = super(Dashboard, self).get_context() File "C:\Users\Lenovo\code\ft\venv\lib\site-packages\xadmin\views\base.py", line 80, in method return filter_chain(filters, len(filters) - 1, _inner_method, *args, **kwargs) File "C:\Users\Lenovo\code\ft\venv\lib\site-packages\xadmin\views\base.py", line 63, in filter_chain return filter_chain(filters, token - 1, _inner_method, *args, **kwargs) File "C:\Users\Lenovo\code\ft\venv\lib\site-packages\xadmin\views\base.py", line 49, in filter_chain return func() File "C:\Users\Lenovo\code\ft\venv\lib\site-packages\xadmin\views\base.py", line 62, in _inner_method return fm(func if fargs[1] == '' else func(), *args, **kwargs) File "C:\Users\Lenovo\code\ft\venv\lib\site-packages\xadmin\views\base.py", line 74, in _inner_method return func(self, *args, **kwargs) File "C:\Users\Lenovo\code\ft\venv\lib\site-packages\xadmin\views\base.py", line 410, in get_context menus = copy.copy(self.get_nav_menu()) File "C:\Users\Lenovo\code\ft\venv\lib\site-packages\xadmin\views\base.py", line 80, in method return filter_chain(filters, len(filters) - 1, _inner_method, *args, **kwargs) File "C:\Users\Lenovo\code\ft\venv\lib\site-packages\xadmin\views\base.py", line 49, in filter_chain return func() File "C:\Users\Lenovo\code\ft\venv\lib\site-packages\xadmin\views\base.py", line 74, in _inner_method return func(self, *args, **kwargs) File "C:\Users\Lenovo\code\ft\venv\lib\site-packages\xadmin\views\base.py", line 373, in get_nav_menu app_title = smart_text(apps.get_app_config(app_label).verbose_name) File "C:\Users\Lenovo\code\ft\venv\lib\site-packages\django\apps\registry.py", line 162, in get_app_config raise LookupError(message) LookupError: No installed app with label 'reversion'. [24/Aug/2021 15:59:27] "GET /xadmin/ HTTP/1.1" 500 183939

    opened by haiya512 1
Releases(0.4.0)
fastapi-admin is a fast admin dashboard based on FastAPI and TortoiseORM with tabler ui, inspired by Django admin.

fastapi-admin is a fast admin dashboard based on FastAPI and TortoiseORM with tabler ui, inspired by Django admin.

fastapi-admin 1.4k Jul 1, 2022
A Django admin theme using Twitter Bootstrap. It doesn't need any kind of modification on your side, just add it to the installed apps.

django-admin-bootstrapped A Django admin theme using Bootstrap. It doesn't need any kind of modification on your side, just add it to the installed ap

null 1.6k Jun 26, 2022
A Django admin theme using Twitter Bootstrap. It doesn't need any kind of modification on your side, just add it to the installed apps.

django-admin-bootstrapped A Django admin theme using Bootstrap. It doesn't need any kind of modification on your side, just add it to the installed ap

null 1.6k Jun 26, 2022
A cool, modern and responsive django admin application based on bootstrap 5

django-baton A cool, modern and responsive django admin application based on bootstrap 5 Documentation: readthedocs Live Demo Now you can try django-b

Otto srl 601 Jun 25, 2022
Extends the Django Admin to include a extensible dashboard and navigation menu

django-admin-tools django-admin-tools is a collection of extensions/tools for the default django administration interface, it includes: a full feature

Django Admin Tools 691 Jun 24, 2022
Jet Bridge (Universal) for Jet Admin – API-based Admin Panel Framework for your application

Jet Bridge for Jet Admin – Admin panel framework for your application Description About Jet Admin: https://about.jetadmin.io Live Demo: https://app.je

Jet Admin 1.2k Jun 27, 2022
aiohttp admin is generator for admin interface based on aiohttp

aiohttp admin is generator for admin interface based on aiohttp

Mykhailo Havelia 15 May 19, 2022
📱 An extension for Django admin that makes interface mobile-friendly. Merged into Django 2.0

Django Flat Responsive django-flat-responsive is included as part of Django from version 2.0! ?? Use this app if your project is powered by an older D

elky 249 Apr 2, 2022
An improved django-admin-tools dashboard for Django projects

django-fluent-dashboard The fluent_dashboard module offers a custom admin dashboard, built on top of django-admin-tools (docs). The django-admin-tools

django-fluent 315 Jun 16, 2022
A Django app for easily adding object tools in the Django admin

Django Object Actions If you've ever tried making admin object tools you may have thought, "why can't this be as easy as making Django Admin Actions?"

Chris Chang 460 Jun 28, 2022
Disable dark mode in Django admin user interface in Django 3.2.x.

Django Non Dark Admin Disable or enable dark mode user interface in Django admin panel (Django==3.2). Installation For install this app run in termina

Artem Galichkin 5 Apr 13, 2022
Modern responsive template for the Django admin interface with improved functionality. We are proud to announce completely new Jet. Please check out Live Demo

Django JET Modern template for Django admin interface with improved functionality Attention! NEW JET We are proud to announce completely new Jet. Plea

Geex Arts 3.3k Jul 2, 2022
A jazzy skin for the Django Admin-Interface (official repository).

Django Grappelli A jazzy skin for the Django admin interface. Grappelli is a grid-based alternative/extension to the Django administration interface.

Patrick Kranzlmueller 3.3k Jun 29, 2022
django's default admin interface made customizable. popup windows replaced by modals. :mage: :zap:

django-admin-interface django-admin-interface is a modern responsive flat admin interface customizable by the admin itself. Features Beautiful default

Fabio Caccamo 1.1k Jun 29, 2022
Extendable, adaptable rewrite of django.contrib.admin

django-admin2 One of the most useful parts of django.contrib.admin is the ability to configure various views that touch and alter data. django-admin2

Jazzband 1.2k Jun 21, 2022
Modern theme for Django admin interface

Django Suit Modern theme for Django admin interface. Django Suit is alternative theme/skin/extension for Django administration interface. Project home

Kaspars Sprogis 2.2k Jun 21, 2022
Django application and library for importing and exporting data with admin integration.

django-import-export django-import-export is a Django application and library for importing and exporting data with included admin integration. Featur

null 2.4k Jun 29, 2022
:honey_pot: A fake Django admin login screen page.

django-admin-honeypot django-admin-honeypot is a fake Django admin login screen to log and notify admins of attempted unauthorized access. This app wa

Derek Payton 880 Jun 21, 2022
"Log in as user" for the Django admin.

django-loginas About "Login as user" for the Django admin. loginas supports Python 3 only, as of version 0.4. If you're on 2, use 0.3.6. Installing dj

Stavros Korokithakis 307 Jun 29, 2022