Uploaded on

 

  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Be the first to comment
    Be the first to like this
No Downloads

Views

Total Views
589
On Slideshare
0
From Embeds
0
Number of Embeds
0

Actions

Shares
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