Your SlideShare is downloading. ×
Admin
Upcoming SlideShare
Loading in...5
×

Thanks for flagging this SlideShare!

Oops! An error has occurred.

×

Introducing the official SlideShare app

Stunning, full-screen experience for iPhone and Android

Text the download link to your phone

Standard text messaging rates apply

Admin

613
views

Published on


0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total Views
613
On Slideshare
0
From Embeds
0
Number of Embeds
0
Actions
Shares
0
Downloads
0
Comments
0
Likes
0
Embeds 0
No embeds

Report content
Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
No notes for slide
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • Transcript

    • 1. Administration Rashi Dhing
    • 2. A blog web application • We need to have an interface to • post, delete and modify articles • moderate comments • manage authorized writers and viewers ➡ We need an administration interface
    • 3. Why having an administration interface• Inspecting data see what the database contains• Managing acquired data insert, modify and delete database records• Managing users define who can access your application✓ All of these should be accessible for non technical users
    • 4. How to build such an administrator interface?➡ We could build the administrator interface from scratch๏ Its painfully, boring and repetitive to build it✓ With Django “batteries are included”
    • 5. Django provides✓ An optional, pluggable and customizable admin interface ... ... and it looks really good!
    • 6. Activate the admin interface for your Django project
    • 7. Step 1 - Modify the project settings ... setting.py INSTALLED_APPS = ( django.contrib.auth, django.contrib.contenttypes, django.contrib.sessions, django.contrib.sites, django.contrib.messages, django.contrib.staticfiles, WebDirectory, # Uncomment the next line to enable the admin: django.contrib.admin, # Uncomment the next line to enable admin documentation: # django.contrib.admindocs, ) ...
    • 8. Step 2 - Re-synchronize the database$ python manage.py syncdb
    • 9. Step 3 - Modify the project URL Dispatcher urls.pyfrom django.conf.urls.defaults import patterns, include, urlurlpatterns = patterns(, (r^webdirectory/, include(WebDirectory.urls)))from django.contrib import adminadmin.autodiscover()urlpatterns += patterns(,(r^admin/, include(admin.site.urls)))
    • 10. The admin interface is ready!
    • 11. The admin interface is ready! URL of the admin site
    • 12. The admin interface is ready! URL of the admin site So far, you can login as the superuser created during the first database sync
    • 13. Activate the admin interface for the WebDirectory app
    • 14. Step 1 - Create the admin.py file in WebDirectory WebDirectory/ __init__.py models.py test.py views.py urls.py admin.py templates/ static/
    • 15. Step 2 - Modify admin.py WebDirectory/admin.py from WebDirectory.models import Entry from django.contrib import admin admin.site.register(Entry)
    • 16. Step 2 - Modify admin.py WebDirectory/admin.py from WebDirectory.models import Entry from django.contrib import admin admin.site.register(Entry) makes the Entry data model available on the admin interface
    • 17. WebDirectory data models
    • 18. From WebDirectory admin you can
    • 19. From WebDirectory admin you can get the list of records
    • 20. From WebDirectory admin you can add records get the list of records
    • 21. From WebDirectory admin you can add records get the list of records
    • 22. From WebDirectory admin you can add records get the list of records modify records
    • 23. From WebDirectory admin you can add records get the list of records modify recordsdelete records
    • 24. Creating a dedicated administrator for WebDirectory
    • 25. The superuser administrator has all powers• Create, modify and delete users• Insert, modify, delete records from every application
    • 26. How to be more restrictive?✓ We want to create an administrator for the WebDirectory application only • A dedicated user admin named John Doe - login: jdoe • With the administrative privileges to create, modify and delete records in WebDirectory only
    • 27. Create the John Doe admin user
    • 28. login and password
    • 29. login and passworduser’s information
    • 30. login and password user’s informationstaff = admin power
    • 31. login and password user’s informationstaff = admin power give all administrative permissions for WebDirectory
    • 32. What the administrator can do
    • 33. What the administrator can do After logging in as jdoe ...
    • 34. What the administrator can do After logging in as jdoe ... ... John Doe can administrate WebDirectory only
    • 35. Customize the admin interface
    • 36. How to customize the admin interface?✓ By editing the admin.py• The class ModelAdmin is the representation of the models in the admin interface• Changing the admin options 1. create a new model admin object class EntryAdmin(admin.ModelAdmin): ... 2. register this new admin object admin.site.register()
    • 37. Task 1 - Customizing the interface for editing a recordDefault
    • 38. Task 1 - Customizing the interface for editing a recordDefault Finally fields grouped in fieldsets
    • 39. Task 1.1 - Modify the field order when editing a recordDefault
    • 40. Task 1.1 - Modify the field order when editing a recordDefault After fields reordered
    • 41. Task 1.1 - Editing admin.py WebDirectory/admin.py from WebDirectory.models import Entry from django.contrib import admin Class EntryAdmin(admin.ModelAdmin): fields = [name, image, mimeType, webpage] admin.site.register(Entry,EntryAdmin)
    • 42. Task 1.2 - Splitting fields into field setsNow
    • 43. Task 1.2 - Splitting fields into field setsNow Finally fields grouped in fieldsets
    • 44. Task 1.2 - Editing admin.py WebDirectory/admin.py from WebDirectory.models import Entry from django.contrib import admin Class Class EntryAdmin(admin.ModelAdmin): fieldsets = [ (File info, {fields: [name,webpage]}), (Upload image, {fields: [image,mimeType]})] admin.site.register(Entry, MyAdmin)
    • 45. Task 2 - Customizing the interface for listing all recordsDefault
    • 46. Task 2 - Customizing the interface for listing all recordsDefault Finally Multiple attributes displayed
    • 47. Task 2 - Customizing the interface for listing all recordsDefault Finally search by name Multiple attributes displayed
    • 48. Task 2 - Customizing the interface for listing all recordsDefault Finally search by name Multiple attributes displayed filter by MIME type
    • 49. Task 2.1 - Changing the record list outputDefault
    • 50. Task 2.1 - Changing the record list outputDefault After Multiple attributes displayed
    • 51. Task 2.1 - Editing admin.py WebDirectory/admin.py from WebDirectory.models import Entry from django.contrib import admin Class Class EntryAdmin(admin.ModelAdmin): fieldsets = [ (File info, {fields: [name,webpage]}), (Upload image, {fields: [image,mimeType]})] list_display = (name, mimeType, webpage) admin.site.register(Entry, MyAdmin)
    • 52. Task 2.2 - Adding filter and search Now
    • 53. Task 2.2 - Adding filter and search Now Finally search by name filter by MIME type
    • 54. Adding filter and search WebDirectory/admin.py from WebDirectory.models import Entry from django.contrib import admin Class Class EntryAdmin(admin.ModelAdmin): fieldsets = [ (File info, {fields: [name,webpage]}), (Upload image, {fields: [image,mimeType]})] list_display = (name, mimeType, webpage) list_filter = [mimeType] search_fields = [name] admin.site.register(Entry, MyAdmin)
    • 55. Advanced Customization
    • 56. More customization• We should be able to change the entire page layout✓ Redefine HTML and CSS of the admin pages➡ Redefine (extends) the predefined admin templates
    • 57. Step 1 - Create an admin directory in the project tsansweb/ __init__.py manage.py settings.py urls.py WebDirectory/ admin/ templates/ admin/
    • 58. Step 2 - Copy the admin templates• Find your Django installation path $ python >> import django my django_path >> django.__file__ /Library/Python/2.7/site-packages/django/__init__.pyc • Copy the templates index.html and base_site.html from django_path/contrib/admin/templates/admin/ to project_path/tsansweb/admin/templates/
    • 59. For example, change the title of the admin portal admin/templates/admin/base_site.html {% extends "admin/base.html" %} {% load i18n %} title in the header {% block title %}{{ title }} | {% trans My Custom Admin Portal %}{% endblock %} {% block branding %} <h1 id="site-name">{% trans My Custom Admin Portal %}</h1> {% endblock %} {% block nav-global %}{% endblock %} title in the body