Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Appearance settings

tomasznajda/flask-adminlte

Open more actions menu

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

9 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Flask AdminLTE

Bootstrap AdminLTE template adapted to the flask framework using flask-admin 1.5.2 and flask-security 3.0.0.
It helps to develop pretty, easy to use admin panel for backend written in flask.

Live preview

http://adminlte.najdaapps.com/admin/
login: admin@admin.com
password: admin

Features

  • Accounts
    • login page
    • register page
    • reset password page
    • change password page
    • gravatar profile images support
  • Model Views
    • create/show/edit/delete single record
    • show list of items
    • delete selected list of items
    • export all of records to *.csv file
    • filters
    • search
    • live edit
    • crud inside modal or single page
  • Menu
    • categories
    • model views
    • links

Usage

Copy directories adminlte, static, templates to your project.

Basic configuration

from flask import Flask, url_for
from flask_security import Security
from flask_admin import helpers as admin_helpers
from adminlte.admin import AdminLte, admins_store

app = Flask(__name__)

security = Security(app, admins_store)
admin = AdminLte(app, skin = 'green', name = 'FlaskCMS', short_name = "<b>F</b>C", long_name = "<b>Flask</b>CMS")

@security.context_processor
def security_context_processor():
    return dict(
        admin_base_template = admin.base_template,
        admin_view = admin.index_view,
        h = admin_helpers,
        get_url = url_for
    )

Add view for your model

class DeviceView(BaseAdminView):
    column_editable_list = ['name', 'type', 'rooted']
    column_searchable_list = ['name', 'type', 'rooted']
    column_exclude_list = None
    column_details_exclude_list = None
    column_filters = ['name', 'type', 'rooted']
    can_export = True
    can_view_details = False
    can_create = True
    can_edit = True
    can_delete = True
    edit_modal = True
    create_modal = True
    details_modal = False
    

admin.add_view(DeviceView(Device, db.session, name = "Devices", menu_icon_value = 'fa-laptop'))

Add link

admin.add_link(FaLink(name='Website', url='http://tomasznajda.com', icon_value = 'fa-globe', target = "_blank"))

Add category

admin.add_view(DeviceView(Device, db.session, name = "Devices", category='Author', menu_icon_value = 'fa-laptop'))
admin.add_link(FaLink(name='Website', category='Author', url='http://tomasznajda.com', icon_value = 'fa-globe', target = "_blank"))
admin.set_category_icon(name='Author', icon_type = 'fa', icon_value = 'fa-address-card')

Configuration

Basic AdminLTE configuration:

  • app -> Flask application object
  • name -> Eg. FlaskCMS. Application name. Will be displayed as a page title. Defaults to "Admin"
  • short_name -> Eg. <b>F</b>C. Short application name. Will be displayed in the collapsed menu bar. By default will use value of the name property.
  • long_name -> Eg. <b>Flask</b>CMS. Long application name. Will be displayed in the expanded menu bar and above each security form. By default will use value of the name property.
  • skin -> AdminLTE skin color (blue, black, puprle, green, red, yellow, blue-light, black-light, purple-light, green-light, red-light, yellow-light). By default will use blue.
  • url -> Base URL
  • subdomain -> Subdomain to use
  • index_view -> Home page view to use. Defaults to AdminIndexView.
  • translations_path -> Location of the translation message catalogs. By default will use the translations shipped with Flask-Admin.
  • endpoint -> Base endpoint name for index view. If you use multiple instances of the Admin class with a single Flask application, you have to set a unique endpoint name for each instance.
  • static_url_path -> Static URL Path. If provided, this specifies the default path to the static url directory for all its views. Can be overridden in view configuration.
  • base_template -> Override base HTML template for all static views. Defaults to admin/base.html.

ModelViews configuration:

  • list of columns that can be edited
column_editable_list = ['from_user', 'to_user', 'subject', 'content', 'created_at']
  • list of columns that should be taken into account during search, if None - search field will be hidden
column_searchable_list = ['from_user.first_name', 'from_user.last_name', 'from_user.email', 'to_user.first_name',
                          'to_user.last_name', 'to_user.email', 'subject', 'content', 'created_at']
  • list of columns that should be omitted on the list page, if None - all columns will be shown
column_exclude_list = ['created_at']
  • list of columns that should be omitted on the details page or modal, if None - all columns will be shown
column_details_exclude_list = ['created_at']
  • list of columns that can be used as filters, if None - filters button will be hidden.
column_filters = ['subject', 'content', 'created_at']
  • enabling features
can_export = True
can_view_details = True
can_create = True
can_edit = True
can_delete = True
  • modal or page
edit_modal = True
create_modal = True
details_modal = True

Security configuration:

  • enable register form
SECURITY_REGISTERABLE = True
  • enable forgot password form
SECURITY_RECOVERABLE = True
  • enable change password form
SECURITY_CHANGEABLE = True
Morty Proxy This is a proxified and sanitized view of the page, visit original site.