Jazzy theme for Django

Overview

Django jazzmin (Jazzy Admin)

Docs PyPI download month PyPI version Python versions Django Versions Coverage Status

Drop-in theme for django admin, that utilises AdminLTE 3 & Bootstrap 4 to make yo' admin look jazzy

Installation

pip install django-jazzmin

Documentation

See Documentation or Test App

Demo

Live demo https://django-jazzmin.herokuapp.com/admin

Username: [email protected]

Password: test

Note: Data resets nightly

Features

  • Drop-in admin skin, all configuration optional
  • Customisable side menu
  • Customisable top menu
  • Customisable user menu
  • 4 different Change form templates (horizontal tabs, vertical tabs, carousel, collapsible)
  • Bootstrap 4 modal (instead of the old popup window, optional)
  • Search bar for any given model admin
  • Customisable UI (via Live UI changes, or custom CSS/JS)
  • Responsive
  • Select2 drop-downs
  • Bootstrap 4 & AdminLTE UI components
  • Using the latest adminlte + bootstrap

Screenshots

Dashboard

dashboard

List view

table list

Change form templates

Collapsed side menu

form page

Expanded side menu

Single

Horizontal tabs

Horizontal tabs

Vertical tabs

Vertical tabs

Collapsible

Collapsible

Carousel

Carousel

Related modal

Related modal

History page

form page

Login view

login

UI Customiser

ui_customiser

Mobile layout

mobile

Tablet layout

tablet

Admin Docs (if installed)

admin_docs

Thanks

This was initially a Fork of https://github.com/wuyue92tree/django-adminlte-ui that we refactored so much we thought it deserved its own package, big thanks to @wuyue92tree for all of his initial hard work, we are still patching into that project were possible, but this project has taken a different direction.

Comments
  • WIP: Support django-admin-numeric-filter

    WIP: Support django-admin-numeric-filter

    This adds django-admin-numeric-filter to the test app. It does this by adding a pages field to the Books and add it to the admin.

    It works, but it just needs some styling.

    See #193

    opened by hwalinga 14
  • Darkmode (feature)

    Darkmode (feature)

    It would be nice to have a darkmode option in the config. Since some people really like darkmode.

    Since this project is based on bootstrap, you can simply replace the bootstrap files with a themed one from for example bootswatch.com

    I already poked around a bit and it generally works, but some elements need some additionally CSS. I tried to do that myself, but I had difficulties setting the correct shades of grey. (Full disclosure: I actually don't like darkmode.)

    enhancement 
    opened by hwalinga 10
  • Select Width for ForeignKey on Admin Change Form

    Select Width for ForeignKey on Admin Change Form

    When show a Simple Select for ForeignKey on Admin form the width of the field isn't set right. As you can see on the test app, the width of the element is set to 163px: image But, it needs to be set to 168px so the whole text can apper in the select widget: image

    I don't know if its intended to be like this, but, it stated on 2.4.0.

    opened by jonasjahns 9
  • Jazz up Stacked inlines

    Jazz up Stacked inlines

    @farridav It took me some time, but I managed to get at least a first version of what I imagine we could get for the stacked inlines. It took me to write some CSS.. but at least no JS (for now 😄 )

    See screenshots below:

    Screenshot 2020-10-03 at 19 05 38 Screenshot 2020-10-03 at 19 06 40 Screenshot 2020-10-03 at 19 06 48 Screenshot 2020-10-03 at 19 06 54

    Let me know your thoughts!

    opened by TysonRV 8
  • Font awesome custom icons don't render

    Font awesome custom icons don't render

    my setting 👇 "icons": { "users.User": "fas fa-users-cog", "users.SnackatUser": "fas fa-user", "users.SupplierUser": "fas fa-users", "users.ShadowUser": "fas fa-users", "users.FeedBack": "far fa-comment-alt", "users.Role": "fas fa-book-open", "configs.Config": "fas fa-sliders-h", "tasks.TaskLog": "fas fa-tasks", "tasks.CronObject": "fas fa-th", . . } I deploy on AWS Elastic Beanstalk. how it shows 👇 Screen Shot 2021-12-29 at 10 03 11 PM

    opened by ahmedelfateh 7
  • write custom views for admin

    write custom views for admin

    Hello i'm trying to write a custom views for the django admin, the problem i'm having is the sidebar app doesn't render. Here is my custom view:

    from django.shortcuts import render
    from django.contrib.admin.views.decorators import staff_member_required
    from django.contrib.admin import AdminSite
    class MyAdminSite(AdminSite):
                pass
    mysite = MyAdminSite()
    
    # Create your views here.
    @staff_member_required
    def student_profile(request):
        if request.method == 'GET':
            return render(request, 
                        'student_profile.html', 
                        {
                            'site_header': mysite.site_header,
                            'has_permission': mysite.has_permission(request), 
                            'site_url': mysite.site_url                    }
                    )
    

    The custom view render perfectly but the sidebar don't have any apps list display

    Screen Shot 2020-12-01 at 2 03 11 PM

    I tried to render those context with other django custom admin template(django-baton, django-suit) and the apps list show normally, it doesn't seem to work for only jazzmin. What else do i need to pass to the template for the sidebar app list to show?

    in your jazzmin.py i see that you having custom template tags that accept available_apps https://github.com/farridav/django-jazzmin/blob/f908d92c0ce8aaad33653f80df4ec844bdbb83de/jazzmin/templatetags/jazzmin.py#L43

    i tried to add

    'available_apps': mysite.get_app_list(request)
    

    but it doesn't seem to work either

    opened by linhnvhicts 7
  • apps not shown

    apps not shown

    I have 5 apps installed in my project which are working fine for me in my Django admin. But i installed jazzmin admin everything is working fine for now but its shows me only 3 apps. further my other 2 apps name start with capital letter. i tried to rename them and check it again but it didn't resolve my issue.

    opened by navi380 7
  • Feature/filter input length

    Feature/filter input length

    A feature to add filter_input_length class attritube for admin models to change select2's minimumInputLength (which defaults to 0)

    • [X] Implementation
    • [x] Docs
    • [x] Questions resolved

    closes #319

    opened by dhvcc 6
  • Scroll for fixed sidebar

    Scroll for fixed sidebar

    Right now fixed sidebar does not support scrolling and if you have a lot of apps it becomes a trouble

    1. Can't access apps in the end image
    2. The default scroll may seem ugly + it makes .nav-item overflow its container which breaks paddings or just cuts of the edge of rounded button (already fixed with width: 100%) image image
    3. Making everything even worse, fixed sidebar makes overflow-x inherit scroll image

    Solution

    This PR proposes elegant and css-way of fixing this issue making fixed sidebar scrollable while hiding the scrollbar. Also .nav-item won't overflow even if the browser will render the scrollbar image

    opened by dhvcc 6
  • ForeignKey select not populated when adding new inline object

    ForeignKey select not populated when adding new inline object

    Hi! I love the package and the style of the admin, so thanks for creating it.

    There seems to be a bug in inline form handling with foreign keys, that's even present on the demo app.

    For example, if you go to https://django-jazzmin.herokuapp.com/en/admin/books/author/44/change/#books-tab and click "Add another book", the "Library" select box for the new row will have no items available, whereas in the initial inline rows you can choose libraries from the select box.

    I attach a couple of screens:

    • a preexisting row (because of the extra parameter probably) which has options available as expected regular

    • and of the newly added row, for which there are no choices populated newly_added

    Hopefully something can be done here.

    I tested it on Ubuntu on Chrome 86 and FIrefox 81 and it's the same.

    bug 
    opened by Blaza 6
  • utils.get_admin_url goes wrong for apps named with camel case

    utils.get_admin_url goes wrong for apps named with camel case

    I think there may be a problem with get_admin_url and apps named in CamelCase.

    Given we have an app named CamelStore and inside a model named CamelType the admin change list name for that would be admin:CamelStore_cameltype_changelist. As get_admin_url converts the whole string with lower() that would result in a non resolvable admin url.

    Just removing the lower()call in line 50 should solve that problem.

    Originally posted by @mpibpc-mroose in https://github.com/farridav/django-jazzmin/issues/99#issuecomment-721690070

    bug 
    opened by mpibpc-mroose 6
  • Fix non ascii characters being used in element IDs

    Fix non ascii characters being used in element IDs

    Hi!

    The unicode_slugify filter is used to generate slugs from the display name of things like tabs. This variant keeps special, non-ascii characters such as accented characters.

    However, the resulting slug is used as ID for some elements (like the content of tabbed menus), and using non-ascii characters in IDs can cause problems such as the inability to generate a URL that directly opens a specific tab. Such problems can easily be explained by the fact that IDs with special characters don't seem to be supported by the W3C.

    Therefore, the ascii variant of this filter (ie: slugify) should be used instead.

    Regards, Pursuit

    opened by fr-Pursuit 0
  • Bump certifi from 2021.10.8 to 2022.12.7

    Bump certifi from 2021.10.8 to 2022.12.7

    Bumps certifi from 2021.10.8 to 2022.12.7.

    Commits

    Dependabot compatibility score

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    • @dependabot use these labels will set the current labels as the default for future PRs for this repo and language
    • @dependabot use these reviewers will set the current reviewers as the default for future PRs for this repo and language
    • @dependabot use these assignees will set the current assignees as the default for future PRs for this repo and language
    • @dependabot use this milestone will set the current milestone as the default for future PRs for this repo and language

    You can disable automated security fix PRs for this repo from the Security Alerts page.

    dependencies python 
    opened by dependabot[bot] 0
  • Demo not working

    Demo not working

    Since Heroku is no longer a free platform, the demo of Jazzmin is not working anymore. I often use the demo to generate config codes. Much helpful. Let me know if you need free hosting to host this. I can provide you to host demo. :) If not then please fix this please.

    opened by Mayanktaker 0
  • python manage.py collectstatic - error with jazzmin.

    python manage.py collectstatic - error with jazzmin.

    If i install in settings.py the jazzmin moodule, the system will crash on collectstatic command.

    if i use the original django-admin interface the collectstatic command works

    The CSS file 'vendor/bootswatch/default/bootstrap.min.css' references a file which could not be found: vendor/bootswatch/default/bootstrap.min.css.map. Please check the URL references in this CSS file, particularly any relative paths which might be pointing to the wrong location.

    opened by willianmascimiano 6
  • Change ADD OTHER LINK alignment from TabularInline

    Change ADD OTHER LINK alignment from TabularInline

    Hi! How can i SETUP the TabularInline "Add other link" to the left, instead right alignment.

    Another question is if its possibile change css default parameter to this.

    from btn btn-sm btn-default float-right btn btn-sm btn-success float-left - and add an icon.

    opened by willianmascimiano 0
Releases(v2.6.0)
  • v2.6.0(Nov 3, 2022)

    • Various CSS Fixes
    • Adds ability to use separate login logo from site logo (@PrynsTag )
    • Fixed width for registration templates (@timoludwig )
    • Cleanup template inheritance for logout template
    • Fix admindocs brandingc (@CarbonBY)
    • Fix stacked inline permissions check
    • Allow for multiple global search fields (@jrdabrio )
    • Ports fix over for modal window closing bug
    • lots more smaller bugfixes
    Source code(tar.gz)
    Source code(zip)
  • v2.5.0(Mar 27, 2022)

    • Fixes for active states in sidebar [@saeedhmt ]
    • Fixes missing button in StackedInline and readonly field alignment [@ Pavel Pančocha]
    • Remove pyenv local version + upgrade CI action [@dhvcc ]
    • Fix related objects buttons not firing JS event [@dekomote ]
    • DRY up and Improve login template + add in proper password reset suppport [@timoludwig ]
    Source code(tar.gz)
    Source code(zip)
  • v2.4.9(Jan 16, 2022)

    • Python 3.10 + Django 4 support
    • Render our fieldset descriptions on changeform templates [@SourceDoctor ]
    • Various new translations and updates [@arneatec, @pierreben ]
    • Update bootstrap from v4.0.0 to v4.6.1 [@GiladE ]
    • Various padding fixes [@pierreben, @Laityned ]
    • Support for using user model instance method on avatar [@joearton ]
    • Make the use of google 'source code pro' fonts optional using JAZZMIN_SETTINGS['use_google_fonts_cdn'] = True|False [@RenWal ]
    • Stop search engines indexing admin sites with meta tag [@felixcheruiyot ]
    Source code(tar.gz)
    Source code(zip)
  • v2.4.8(Jul 27, 2021)

    • Some basic compatibility with django-filer
    • fix for launching iframes in change form
    • update compatible django versions
    • bulgarian translations
    • support for ckeditor
    Source code(tar.gz)
    Source code(zip)
  • v2.4.7(May 14, 2021)

    • Allow separate favicon from logo, allow customisation of the classes
    • Fix paginator previous and next arrows
    • Add correct classes to django actions
    • safely check for request.current_app as its not always present
    Source code(tar.gz)
    Source code(zip)
  • v2.4.6(Apr 16, 2021)

    • Fix pagination labels
    • Local dev improvements
    • Basic support for django-admin-numeric-filter needs styling
    • Allow ordering of content sections within detail view see docs
    • Fix permissions check around showing history button on detail view
    • Display fix for map on a GeoDjango Pointfield widget (it was previously hidden)
    Source code(tar.gz)
    Source code(zip)
  • v2.4.5(Mar 31, 2021)

    • Fixes for scrolling fixed sidebar
    • Show error when logged in but no admin access
    • latest round of changes to select2 width (next release will make this user controlled)
    • Update docs
    • fixes to site name (more support for multi-site admins)
    • Fixing use of dark theme
    • field fixes to error messages
    • various other small fixes
    Source code(tar.gz)
    Source code(zip)
  • v2.4.4(Jan 11, 2021)

  • v2.4.3(Dec 22, 2020)

  • v2.4.2(Dec 19, 2020)

    • Allow customisation of buttons
    • Continued improvement and tweaks on dark themes
    • Upgrade to latest adminLTE (which includes more dark mode support)
    • Minor bugfixes and translations
    • Drop support for python 3.5, start testing against 3.9
    • Add black and mypy checks in
    Source code(tar.gz)
    Source code(zip)
  • v2.4.1(Nov 16, 2020)

  • v2.4.0(Nov 14, 2020)

    Themes:

    • Add in theming support via UI customiser
    • Move all library static files into vendor
    • Adds in dropdown for choosing theme in UI customiser drawer
    • Adds in all current bootswatch themes
    • Adds theme-{theme_name} into body classes (for theme specific CSS rules)
    • Disables modal popups for now by default (can be enabled), as they are broken on mobile cleans up and groups sidebar customisations

    UI tweaks:

    • Whether to constrain the page to a box (leaving big margins at the side) with "layout_boxed": False,
    • Make the footer sticky, keeping it in view all the time with "footer_fixed": False,
    • Make the sidebar sticky, keeping it in view as you scroll with "sidebar_fixed": False,
    • Make the top navbar sticky, keeping it in view as you scroll with "navbar_fixed": False,

    Locale support:

    • Add locale support for hu and ru

    Minor bug fixes, tidying up code, small UI tweaks on inlines

    Source code(tar.gz)
    Source code(zip)
  • v2.3.11(Oct 28, 2020)

    • Compatibility with MPTT
    • Compatibility with django-treebeard
    • Compatibility with django-solo
    • Compatibility with import_export
    • convert all popups to modals See https://django-jazzmin.readthedocs.io/configuration/#related-modal (Big thanks to @KarimTayie)
    • Various minor bugfixes
    • Rewrite test app
    • Development docs/guidelines at https://django-jazzmin.readthedocs.io/bugs_and_features/
    Source code(tar.gz)
    Source code(zip)
  • v2.2.11(Oct 6, 2020)

  • v2.2.10(Oct 2, 2020)

  • v2.2.9(Sep 30, 2020)

    Enable translations. Languages added so far:

    • German
    • Spanish
    • Chinese (simplified/traditional)

    Bug fixes:

    • Reverse order in object history
    • Doc fixes
    Source code(tar.gz)
    Source code(zip)
  • v2.2.8(Sep 19, 2020)

    • Use poetry to manage requirements
    • Fix broken badge
    • Organise images on documentation + other minor changes
    • Some styling changes
    • Fix heights on select filter in changeform template
    • Fix breadcrumb link in app list view
    • Add ability to add custom css&js to login/logout page
    Source code(tar.gz)
    Source code(zip)
  • v2.2.7(Aug 21, 2020)

    • Improve detection of fieldsets
    • Various fixes to support installations with multiple admin sites
    • Increase flexibility for font awesome icons being used
    • Permalinks in docs
    • permissions fixes (Show menu items with change OR view permission)
    Source code(tar.gz)
    Source code(zip)
  • v2.2.6(Aug 6, 2020)

    Bug Fixes:

    • Bugfix: menu not showing Users app for staff users
    • Bugfix: on menu not displaying lowercased apps
    • Bugfix: on slugified parameters to allow unicode characters
    • Ignore coveralls exit code
    Source code(tar.gz)
    Source code(zip)
  • v2.2.5(Jul 21, 2020)

    • Feature: Adds 4 different Change form templates (horizontal tabs, vertical tabs, carousel, collapsible)
    • Bugfix: Ensure parent page is marked as active when on child pages (detail views)
    • Cleaning: Improve test suite
    Source code(tar.gz)
    Source code(zip)
  • v2.1.5(Jul 14, 2020)

    • Fix history page for those with a custom user model
    • Add user defined title to login page
    • Allow customisation of default app / model icons
    • Allow globally defined icons to apply to custom links / user menu links
    • Fix naming of top menu items (Use verbose name instead)
    Source code(tar.gz)
    Source code(zip)
  • v2.1.4(Jun 23, 2020)

    • Adds in demo app
    • Fix inline form editing
    • slightly re-strucure base template for less problematic overiding
    • Make admin forms with no fieldsets render without tabs
    Source code(tar.gz)
    Source code(zip)
  • v2.1.3(Jun 17, 2020)

    • Restyle history page and timeline to make them look more jazzy
    • Keep selects consistent throughout the project
    • Add more models to the test application to cover m2m relationships, autocomplete fields and other stuff.
    • Minor bugfixes
    Source code(tar.gz)
    Source code(zip)
  • v2.1.2(Jun 13, 2020)

    • Jazz up the admin docs (https://docs.djangoproject.com/en/dev/ref/contrib/admin/admindocs/)
    • Responsive design tweaks
    • Allow custom links in user menu (See https://django-jazzmin.readthedocs.io/configuration/)
    • Minor bug fixes
    Source code(tar.gz)
    Source code(zip)
  • v2.1.1(Jun 11, 2020)

    • Adds UI Builder
    • Adds supported python versions in package config
    • Adds more test coverage
    • Updates documentation at https://django-jazzmin.readthedocs.io
    Source code(tar.gz)
    Source code(zip)
  • v2.0.1(Jun 9, 2020)

  • v2.0.0(Jun 5, 2020)

    • Upgrades AdminLTE 2 to AdminLTE3
    • Upgrades bootstrap to Bootstrap4
    • Upgrades font awesome to latest
    • Rewrites/Refactors just about everything
    • Adds in support for top menu
    • Lots more small improvements
    Source code(tar.gz)
    Source code(zip)
  • v1.0.1(May 14, 2020)

Owner
David Farrington
A full stack Python engineer with a strong DevOps and leadership background, focused on delivery and progress.
David Farrington
A configurable set of panels that display various debug information about the current request/response.

Django Debug Toolbar The Django Debug Toolbar is a configurable set of panels that display various debug information about the current request/respons

Jazzband 7.3k Dec 31, 2022
Manuskript is an open-source tool for writers.

Manuskript is an open-source tool for writers. Manuskript runs on GNU/Linux, Mac OS X, and Windows.

Olivier 1.4k Jan 07, 2023
Visually distinguish environments in Django Admin

django-admin-env-notice Visually distinguish environments in Django Admin. Based on great advice from post: 5 ways to make Django Admin safer by hakib

Yuri Shikanov 258 Nov 30, 2022
Responsive Theme for Django Admin With Sidebar Menu

Responsive Django Admin If you're looking for a version compatible with Django 1.8 just install 0.3.7.1. Features Responsive Sidebar Menu Easy install

Douglas Miranda 852 Dec 02, 2022
A new style for Django admin

Djamin Djamin a new and clean styles for Django admin based in Google projects styles. Quick start Install djamin: pip install -e git://github.com/her

Herson Leite 236 Dec 15, 2022
Helpers to extend Django Admin with data from external service with minimal hacks

django-admin-data-from-external-service Helpers to extend Django Admin with data from external service with minimal hacks Live demo with sources on He

Evgeniy Tatarkin 7 Apr 27, 2022
A flat theme for Django admin interface. Modern, fresh, simple.

Django Flat Theme django-flat-theme is included as part of Django from version 1.9! 🎉 Please use this app if your project is powered by an older Djan

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

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

差沙 4.7k Dec 31, 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.4k Dec 31, 2022
Django app that enables staff to log in as other users using their own credentials.

Impostor Impostor is a Django application which allows staff members to login as a different user by using their own username and password. Login Logg

Andreu Vallbona Plazas 144 Dec 13, 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 248 Sep 02, 2022
xarray: N-D labeled arrays and datasets

xarray is an open source project and Python package that makes working with labelled multi-dimensional arrays simple, efficient, and fun!

Python for Data 2.8k Dec 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 Dec 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 907 Dec 31, 2022
DyStyle: Dynamic Neural Network for Multi-Attribute-Conditioned Style Editing

DyStyle: Dynamic Neural Network for Multi-Attribute-Conditioned Style Editing

74 Dec 03, 2022
Simple and extensible administrative interface framework for Flask

Flask-Admin The project was recently moved into its own organization. Please update your references to Flask-Admin 5.2k Dec 29, 2022

Firebase Admin Console is a centralized platform for easy viewing and maintenance of Firestore database, the back-end API is a Python Flask app.

Firebase Admin Console is a centralized platform for easy viewing and maintenance of Firestore database, the back-end API is a Python Flask app. A starting template for developers to customize, build

Daqi Chen 1 Sep 10, 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.3k Dec 31, 2022
A new style for Django admin

Djamin Djamin a new and clean styles for Django admin based in Google projects styles. Quick start Install djamin: pip install -e git://github.com/her

Herson Leite 236 Dec 15, 2022
FLEX (Federated Learning EXchange,FLEX) protocol is a set of standardized federal learning agreements designed by Tongdun AI Research Group。

Click to view Chinese version FLEX (Federated Learning Exchange) protocol is a set of standardized federal learning agreements designed by Tongdun AI

同盾科技 50 Nov 29, 2022