SlideShare une entreprise Scribd logo
1  sur  38
Télécharger pour lire hors ligne
Intro to Pinax
       Kickstarting Your Django Apps
               SyPy - November 2011




    Roger Barnes                 @mindsocket
roger@mindsocket.com.au     http://gplus.to/mindsocket
Who am I

   Roger Barnes   BTech ICS

   By day: Tech Lead/Applications Developer   Java :(

   By night: Up and coming Python ninja
Topics

   Intro to Django
   Intro to Pinax
   Alternatives
   Development Tips
   Q&A
What is Django

   ”The web framework for perfectionists with
                 deadlines”

Initially developed in an online news environment

        Designed for rapid development
Django Framework

   Object-relational mapper
   Automatic admin interface
   Elegant URL design
   Template system
   Caching
   More...
       i18n, syndication, generic views, schema
        generation, development server, user model,
        scheduled jobs, test harness, ...
Django is...


         … really well documented

       https://docs.djangoproject.com
Example: More Betterer

   My first Django app
       Goal 1: Learn some Python and Django
       Goal 2: Find out what photos people liked
Example: More Betterer

   Very simple models
       Item (an image)
       Challenge (a showdown between 2 items)
   Item manager
       counts challenge votes
       provides ordered list
st
Lessons from 1 Django app

   Django alone isn't a quickstart/shortcut for
       common web 2.0 functionality
                   OAuth, social, tagging, voting
       front-end
                   HTML, CSS, JS
   This is true of many web frameworks
       Either front- or back-end focussed
   Some best practices aren't obvious
       or are evolving (eg class-based views in 1.3)
What is Pinax
     System for kickstarting Django projects

  ”Pinax takes care of the things that many sites
have in common so you can focus on what makes
                your site different”

  Quickly go from idea to launch (and beyond)
What is Pinax

   Social friendly
       Comments
       Voting
       Notifications
       Profiles/Accounts/OAuth
       ...
   Startup friendly
       Private beta
       Invite codes
       Starter projects
When to use Pinax


Great for building and maintaining multiple sites
                    … quickly

 Not as much benefit for a big enterprise app
Pinax - Pros and cons

   Pros
       Has a lot to offer
       Easier to start with a pinax starter and adapt
   Cons
       Misunderstood
       No recent releases (but active branches on github)
       Django compatibility (Pinax 0.9a1 needed tweaks to
        work with Django 1.3)
   Overall: worth it
Example: Now and Then



  An application for aligning and overlaying
  historical images with modern equivalents
Example: Now and Then


    My 2nd Django app
       Goal 1: Libraryhack entry - http://libraryhack.org/
       Goal 2: Learn more Django & Python!
   Approx. 1 month development
   Started without Pinax
       got stuck on ”common functionality”
   Pinax helped get past theme and account
    management issues
Example: Now and Then
Pinax – Primary Features

   Project conventions
       Layout
       Deployment
   Requirements - pip dependencies
   Templates - quick prototyping
   Core and reusable apps
       Back- and front-end functionality
   Starter projects
       Basis for a Django site, several options
Pinax - Layout
|--   apps                 |--   fixtures
|     |-- about            |     `-- initial_data.json
|     |    |-- models.py   |--   locale
|     |    |-- urls.py     |     |-- ...
|     |    |-- views.py    |--   manage.py
|     |-- my_foo_app       |--   media
|     |    |-- ...         |     |-- css
|     |-- ...              |     |   `-- site_tabs.css
|     |    |-- ...         |     |-- ...
|--   deploy               |--   requirements
|     |-- pinax.fcgi       |     |-- base.txt
|     `-- pinax.wsgi       |     `-- project.txt
|--   dev.db               |--   settings.py
                           |--   templates
                           |     |-- about
                           |     |-- account
                           |     |-- ...
                           |--   tests
                           |     |-- ...
                           |--   urls.py
Pinax

                               For Now and Then:
   Requirements (pip)
                               PIL
       Base                   aino-convert
        what pinax needs       django-extensions
                               django-memcache-status
       Project                django-jenkins
                               selenium
        what you want to add   pyvirtualdisplay
                               MySQL-python
                               python-memcached
                               flickrapi
                               south
                               django-tagging
                               django-voting
                               PyYAML
                               nltk
                               minidetector
                               geopy
Pinax

   Apps
       account and profile management
            openid, e-mail verification, password management
       notifications and activity streams
       private betas and waiting lists
       badges
       tagging
       wikis, forums and blogs
       task tracking
       friend and follower relations
Pinax
   Starter projects
       zero
       basic
       account
       static
       private_beta
       cms_company
       intranet
       social
       cms_holidayhouse
       company
       sample_group
       code
Pinax

           Fairly well documented
        http://pinaxproject.com/docs/

              Code on github
Pinax project status

   Still in active development (see github)
   A new release pending
   Better ecosystem management
       Trying to solve the ”misunderstood” problem
       http://pinaxproject.com/ecosystem/
Pinax isn't

   A silver bullet for front-end
       BYO UX, design, HTML, CSS, JS skills
   Some solutions
       Twitter bootstrap – Pinax has a new theme
       Growing collection of other themes on offer
       HTML5 boilerplate
       Other template + less/CSS + Javascript library
Pinax – Idea to Launch


         The next big social network
         mytweetbooktubelyplus.com

   Domain name is not currently registered.
           Available for you now!
Pinax – Idea to Launch

   Steps
       mkvirtualenv --no-site-packages
        mytweetbooktubelyplus
       pip install Pinax
       pinax-admin setup_project -b social
        mytweetbooktubelyplus
       cd mytweetbooktubelyplus/
       git init
       git commit -am ”Initial commit”
Pinax – Idea to Launch

   Steps (continued)
       edit settings.py
       pip install PIL
            Better: add to requirements or remove dependent app
       python manage.py syncdb
       python manage.py runserver
    


    


       Profit!
Alternatives to Pinax

   Hand-pick your own bundled apps
       PyPI
       Djangopackages.com
   Other starter projects on github
       Eg: django-party-pack
Development tips

   South
       Schema management extension for Django
       Handles updates to existing/populated DB
                  eg: Add/change a column in dev
                  Generate/deploy code to do same in test/prod
       Integrates with django's management tools
Development tips

   Environment/package management
         virtualenv + pip (+ virtualenvwrapper)
         For more complex deploys, look at buildout
         local_settings.py (dev/test/prod)
                            Contains environment specific config
                            And passwords, add to .gitignore

        In settings.py

        try:
           from local_settings import *
        except ImportError:
           pass
Development tips - Testing

   Django + unittest2
         Fixtures for testing models (tests.json)
         Django Client to test views (request/response)

def test_point_list(self):
  """Tests that point_list returns a valid list of lists"""
  fusion = Fusion()
  fusion.points = "1,2,3,4,5,6,7,8"
  self.failUnlessEqual(fusion.point_list(), [[1,2,3,4],[5,6,7,8]])


                      def test_fusion_edit_update(self):
                        self._login()
                        response = self.client.post('/fusion/edit/1/', {'points': '', 'cropthen': ''})
                        self.assertRedirects(response, '/fusion/view/1/')
Development tips – Testing

   TODO UI tests
       Selenium or similar to test UI, esp. javascript



    def test_via_selenium(self):
      from pyvirtualdisplay import Display
      from selenium import webdriver

        display = Display(visible=0, size=(800, 600))
        display.start()

        browser = webdriver.Firefox()
        browser.get('http://myurl...')

        # TODO …
Dev tips - Continuous Integration

   Jenkins                 Build triggered by commit (or polled)
       unittest2
       django-jenkins
       coverage
Development tips - Deployment

   Fast all the way to production
       git pull - ok for simple application
                    TODO: Build pipeline
                    TODO: Continuous Deployment
   Production performance
       Apache + mod-wsgi – ok
                    Use pinax.wsgi
                    May need a little hacking to get paths right
                    TODO: try nginx + uWSGI or similar
                    TODO: High availability + reverse proxy
Development tips – Source Control

      DVCS good - Git(Hub), several alternatives
      Avoid old tech (svn, cvs, vss)
      Embrace branching, merging, regular commits
      Fork other people's repos
          Pull new changes
          Pull-request – send your improvements upstream
      Works with pip
pip install -e git+https://github.com/pinax/pinax-theme-bootstrap#egg=pinax-theme-bootstrap
Development tips
References
   Django
        https://www.djangoproject.com/
        http://djangopackages.com/
   Pinax
        http://pinaxproject.com/ & http://pinaxproject.com/ecosystem/
        https://github.com/pinax/pinax
        http://pinaxproject.com/blog/2011/10/10/djangocon-talk-pinax-after-three-years
   My apps/code
        http://bit.ly/morebetterer
        http://nowandthen.mindsocket.com.au/
        https://github.com/mindsocket/
   Twitter Bootstrap
        http://twitter.github.com/bootstrap/
Q&A

Contenu connexe

En vedette

Keep In Touch: Channel, Expectation and Experience
Keep In Touch: Channel, Expectation and ExperienceKeep In Touch: Channel, Expectation and Experience
Keep In Touch: Channel, Expectation and ExperienceRongrong Wang
 
PROGRAMA PROMESAS CADIZ 1ªFASE
PROGRAMA PROMESAS CADIZ 1ªFASEPROGRAMA PROMESAS CADIZ 1ªFASE
PROGRAMA PROMESAS CADIZ 1ªFASEnia105
 
Schweppes Antiox business case
Schweppes Antiox business caseSchweppes Antiox business case
Schweppes Antiox business caseAlfonso Gadea
 
Matrix mtx m2_m_presentation_2013_june_v11
Matrix mtx m2_m_presentation_2013_june_v11Matrix mtx m2_m_presentation_2013_june_v11
Matrix mtx m2_m_presentation_2013_june_v11Jesus Santos
 
Fundamentos Mejor En Bici
Fundamentos  Mejor En  BiciFundamentos  Mejor En  Bici
Fundamentos Mejor En Bicipabloesperi
 
Animations à Saint-Lary du 19 mars au 3 avril 2016
Animations à Saint-Lary du 19 mars au 3 avril 2016Animations à Saint-Lary du 19 mars au 3 avril 2016
Animations à Saint-Lary du 19 mars au 3 avril 2016Philippe Villette
 
Revista Cisco Live ed 14
Revista Cisco Live ed 14Revista Cisco Live ed 14
Revista Cisco Live ed 14Cisco do Brasil
 
EAGES Proceedings - Hanno Fischer 2
EAGES Proceedings - Hanno Fischer 2EAGES Proceedings - Hanno Fischer 2
EAGES Proceedings - Hanno Fischer 2Stephan Aubin
 
Manual diseno-puesta-a-suelo 2 resistividades
Manual diseno-puesta-a-suelo 2 resistividadesManual diseno-puesta-a-suelo 2 resistividades
Manual diseno-puesta-a-suelo 2 resistividadescmonti40x
 

En vedette (14)

Keep In Touch: Channel, Expectation and Experience
Keep In Touch: Channel, Expectation and ExperienceKeep In Touch: Channel, Expectation and Experience
Keep In Touch: Channel, Expectation and Experience
 
PROGRAMA PROMESAS CADIZ 1ªFASE
PROGRAMA PROMESAS CADIZ 1ªFASEPROGRAMA PROMESAS CADIZ 1ªFASE
PROGRAMA PROMESAS CADIZ 1ªFASE
 
Schweppes Antiox business case
Schweppes Antiox business caseSchweppes Antiox business case
Schweppes Antiox business case
 
Matrix mtx m2_m_presentation_2013_june_v11
Matrix mtx m2_m_presentation_2013_june_v11Matrix mtx m2_m_presentation_2013_june_v11
Matrix mtx m2_m_presentation_2013_june_v11
 
Can ufo doc_7
Can ufo doc_7Can ufo doc_7
Can ufo doc_7
 
Fundamentos Mejor En Bici
Fundamentos  Mejor En  BiciFundamentos  Mejor En  Bici
Fundamentos Mejor En Bici
 
econozco
econozcoeconozco
econozco
 
Sociedad Civil y Colegios profesionales
Sociedad Civil y Colegios profesionalesSociedad Civil y Colegios profesionales
Sociedad Civil y Colegios profesionales
 
Animations à Saint-Lary du 19 mars au 3 avril 2016
Animations à Saint-Lary du 19 mars au 3 avril 2016Animations à Saint-Lary du 19 mars au 3 avril 2016
Animations à Saint-Lary du 19 mars au 3 avril 2016
 
Revista Cisco Live ed 14
Revista Cisco Live ed 14Revista Cisco Live ed 14
Revista Cisco Live ed 14
 
A2 martín-alba-mi presentacion
A2 martín-alba-mi presentacionA2 martín-alba-mi presentacion
A2 martín-alba-mi presentacion
 
EDUCACION
EDUCACIONEDUCACION
EDUCACION
 
EAGES Proceedings - Hanno Fischer 2
EAGES Proceedings - Hanno Fischer 2EAGES Proceedings - Hanno Fischer 2
EAGES Proceedings - Hanno Fischer 2
 
Manual diseno-puesta-a-suelo 2 resistividades
Manual diseno-puesta-a-suelo 2 resistividadesManual diseno-puesta-a-suelo 2 resistividades
Manual diseno-puesta-a-suelo 2 resistividades
 

Similaire à Intro to Pinax: Kickstarting Your Django Apps

First python project
First python projectFirst python project
First python projectNeetu Jain
 
Introduction to Pinax
Introduction to PinaxIntroduction to Pinax
Introduction to PinaxAndy McKay
 
Django Architecture Introduction
Django Architecture IntroductionDjango Architecture Introduction
Django Architecture IntroductionHaiqi Chen
 
Django dev-env-my-way
Django dev-env-my-wayDjango dev-env-my-way
Django dev-env-my-wayRobert Lujo
 
Digital RSE: automated code quality checks - RSE group meeting
Digital RSE: automated code quality checks - RSE group meetingDigital RSE: automated code quality checks - RSE group meeting
Digital RSE: automated code quality checks - RSE group meetingHenry Schreiner
 
Django rest framework
Django rest frameworkDjango rest framework
Django rest frameworkBlank Chen
 
Real world GitOps with Activiti
Real world GitOps with ActivitiReal world GitOps with Activiti
Real world GitOps with ActivitiDouglas Johnson
 
Princeton RSE Peer network first meeting
Princeton RSE Peer network first meetingPrinceton RSE Peer network first meeting
Princeton RSE Peer network first meetingHenry Schreiner
 
Intro to Web Development Using Python and Django
Intro to Web Development Using Python and DjangoIntro to Web Development Using Python and Django
Intro to Web Development Using Python and DjangoChariza Pladin
 
Web Development in Django
Web Development in DjangoWeb Development in Django
Web Development in DjangoLakshman Prasad
 
Python Dependency Management - PyconDE 2018
Python Dependency Management - PyconDE 2018Python Dependency Management - PyconDE 2018
Python Dependency Management - PyconDE 2018Patrick Muehlbauer
 
How to Contribute to Pinax
How to Contribute to PinaxHow to Contribute to Pinax
How to Contribute to Pinaxjtauber
 
Scientist meets web dev: how Python became the language of data
Scientist meets web dev: how Python became the language of dataScientist meets web dev: how Python became the language of data
Scientist meets web dev: how Python became the language of dataGael Varoquaux
 
Implementing a Symfony Based CMS in a Publishing Company
Implementing a Symfony Based CMS in a Publishing CompanyImplementing a Symfony Based CMS in a Publishing Company
Implementing a Symfony Based CMS in a Publishing CompanyMarcos Labad
 
E D - Environmental Dependencies in Python
E D - Environmental Dependencies in PythonE D - Environmental Dependencies in Python
E D - Environmental Dependencies in PythonAdam Englander
 

Similaire à Intro to Pinax: Kickstarting Your Django Apps (20)

Django
DjangoDjango
Django
 
First python project
First python projectFirst python project
First python project
 
Introduction to Pinax
Introduction to PinaxIntroduction to Pinax
Introduction to Pinax
 
Django Architecture Introduction
Django Architecture IntroductionDjango Architecture Introduction
Django Architecture Introduction
 
Django dev-env-my-way
Django dev-env-my-wayDjango dev-env-my-way
Django dev-env-my-way
 
Heroku pycon
Heroku pyconHeroku pycon
Heroku pycon
 
Digital RSE: automated code quality checks - RSE group meeting
Digital RSE: automated code quality checks - RSE group meetingDigital RSE: automated code quality checks - RSE group meeting
Digital RSE: automated code quality checks - RSE group meeting
 
Django rest framework
Django rest frameworkDjango rest framework
Django rest framework
 
Real world GitOps with Activiti
Real world GitOps with ActivitiReal world GitOps with Activiti
Real world GitOps with Activiti
 
Django
DjangoDjango
Django
 
Python+gradle
Python+gradlePython+gradle
Python+gradle
 
Django
DjangoDjango
Django
 
Princeton RSE Peer network first meeting
Princeton RSE Peer network first meetingPrinceton RSE Peer network first meeting
Princeton RSE Peer network first meeting
 
Intro to Web Development Using Python and Django
Intro to Web Development Using Python and DjangoIntro to Web Development Using Python and Django
Intro to Web Development Using Python and Django
 
Web Development in Django
Web Development in DjangoWeb Development in Django
Web Development in Django
 
Python Dependency Management - PyconDE 2018
Python Dependency Management - PyconDE 2018Python Dependency Management - PyconDE 2018
Python Dependency Management - PyconDE 2018
 
How to Contribute to Pinax
How to Contribute to PinaxHow to Contribute to Pinax
How to Contribute to Pinax
 
Scientist meets web dev: how Python became the language of data
Scientist meets web dev: how Python became the language of dataScientist meets web dev: how Python became the language of data
Scientist meets web dev: how Python became the language of data
 
Implementing a Symfony Based CMS in a Publishing Company
Implementing a Symfony Based CMS in a Publishing CompanyImplementing a Symfony Based CMS in a Publishing Company
Implementing a Symfony Based CMS in a Publishing Company
 
E D - Environmental Dependencies in Python
E D - Environmental Dependencies in PythonE D - Environmental Dependencies in Python
E D - Environmental Dependencies in Python
 

Plus de Roger Barnes

The life of a web request - techniques for measuring and improving Django app...
The life of a web request - techniques for measuring and improving Django app...The life of a web request - techniques for measuring and improving Django app...
The life of a web request - techniques for measuring and improving Django app...Roger Barnes
 
Building data flows with Celery and SQLAlchemy
Building data flows with Celery and SQLAlchemyBuilding data flows with Celery and SQLAlchemy
Building data flows with Celery and SQLAlchemyRoger Barnes
 
Introduction to SQL Alchemy - SyPy June 2013
Introduction to SQL Alchemy - SyPy June 2013Introduction to SQL Alchemy - SyPy June 2013
Introduction to SQL Alchemy - SyPy June 2013Roger Barnes
 
Poker, packets, pipes and Python
Poker, packets, pipes and PythonPoker, packets, pipes and Python
Poker, packets, pipes and PythonRoger Barnes
 
Towards Continuous Deployment with Django
Towards Continuous Deployment with DjangoTowards Continuous Deployment with Django
Towards Continuous Deployment with DjangoRoger Barnes
 
Scraping recalcitrant web sites with Python & Selenium
Scraping recalcitrant web sites with Python & SeleniumScraping recalcitrant web sites with Python & Selenium
Scraping recalcitrant web sites with Python & SeleniumRoger Barnes
 

Plus de Roger Barnes (6)

The life of a web request - techniques for measuring and improving Django app...
The life of a web request - techniques for measuring and improving Django app...The life of a web request - techniques for measuring and improving Django app...
The life of a web request - techniques for measuring and improving Django app...
 
Building data flows with Celery and SQLAlchemy
Building data flows with Celery and SQLAlchemyBuilding data flows with Celery and SQLAlchemy
Building data flows with Celery and SQLAlchemy
 
Introduction to SQL Alchemy - SyPy June 2013
Introduction to SQL Alchemy - SyPy June 2013Introduction to SQL Alchemy - SyPy June 2013
Introduction to SQL Alchemy - SyPy June 2013
 
Poker, packets, pipes and Python
Poker, packets, pipes and PythonPoker, packets, pipes and Python
Poker, packets, pipes and Python
 
Towards Continuous Deployment with Django
Towards Continuous Deployment with DjangoTowards Continuous Deployment with Django
Towards Continuous Deployment with Django
 
Scraping recalcitrant web sites with Python & Selenium
Scraping recalcitrant web sites with Python & SeleniumScraping recalcitrant web sites with Python & Selenium
Scraping recalcitrant web sites with Python & Selenium
 

Dernier

How AI, OpenAI, and ChatGPT impact business and software.
How AI, OpenAI, and ChatGPT impact business and software.How AI, OpenAI, and ChatGPT impact business and software.
How AI, OpenAI, and ChatGPT impact business and software.Curtis Poe
 
Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024BookNet Canada
 
The Ultimate Guide to Choosing WordPress Pros and Cons
The Ultimate Guide to Choosing WordPress Pros and ConsThe Ultimate Guide to Choosing WordPress Pros and Cons
The Ultimate Guide to Choosing WordPress Pros and ConsPixlogix Infotech
 
New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024BookNet Canada
 
"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii Soldatenko"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii SoldatenkoFwdays
 
How to write a Business Continuity Plan
How to write a Business Continuity PlanHow to write a Business Continuity Plan
How to write a Business Continuity PlanDatabarracks
 
Generative AI for Technical Writer or Information Developers
Generative AI for Technical Writer or Information DevelopersGenerative AI for Technical Writer or Information Developers
Generative AI for Technical Writer or Information DevelopersRaghuram Pandurangan
 
Anypoint Exchange: It’s Not Just a Repo!
Anypoint Exchange: It’s Not Just a Repo!Anypoint Exchange: It’s Not Just a Repo!
Anypoint Exchange: It’s Not Just a Repo!Manik S Magar
 
What is Artificial Intelligence?????????
What is Artificial Intelligence?????????What is Artificial Intelligence?????????
What is Artificial Intelligence?????????blackmambaettijean
 
A Journey Into the Emotions of Software Developers
A Journey Into the Emotions of Software DevelopersA Journey Into the Emotions of Software Developers
A Journey Into the Emotions of Software DevelopersNicole Novielli
 
DevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platformsDevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platformsSergiu Bodiu
 
Sample pptx for embedding into website for demo
Sample pptx for embedding into website for demoSample pptx for embedding into website for demo
Sample pptx for embedding into website for demoHarshalMandlekar2
 
unit 4 immunoblotting technique complete.pptx
unit 4 immunoblotting technique complete.pptxunit 4 immunoblotting technique complete.pptx
unit 4 immunoblotting technique complete.pptxBkGupta21
 
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)Mark Simos
 
Use of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptx
Use of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptxUse of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptx
Use of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptxLoriGlavin3
 
Advanced Computer Architecture – An Introduction
Advanced Computer Architecture – An IntroductionAdvanced Computer Architecture – An Introduction
Advanced Computer Architecture – An IntroductionDilum Bandara
 
The Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptx
The Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptxThe Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptx
The Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptxLoriGlavin3
 
Training state-of-the-art general text embedding
Training state-of-the-art general text embeddingTraining state-of-the-art general text embedding
Training state-of-the-art general text embeddingZilliz
 
A Deep Dive on Passkeys: FIDO Paris Seminar.pptx
A Deep Dive on Passkeys: FIDO Paris Seminar.pptxA Deep Dive on Passkeys: FIDO Paris Seminar.pptx
A Deep Dive on Passkeys: FIDO Paris Seminar.pptxLoriGlavin3
 
Unraveling Multimodality with Large Language Models.pdf
Unraveling Multimodality with Large Language Models.pdfUnraveling Multimodality with Large Language Models.pdf
Unraveling Multimodality with Large Language Models.pdfAlex Barbosa Coqueiro
 

Dernier (20)

How AI, OpenAI, and ChatGPT impact business and software.
How AI, OpenAI, and ChatGPT impact business and software.How AI, OpenAI, and ChatGPT impact business and software.
How AI, OpenAI, and ChatGPT impact business and software.
 
Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
 
The Ultimate Guide to Choosing WordPress Pros and Cons
The Ultimate Guide to Choosing WordPress Pros and ConsThe Ultimate Guide to Choosing WordPress Pros and Cons
The Ultimate Guide to Choosing WordPress Pros and Cons
 
New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
 
"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii Soldatenko"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii Soldatenko
 
How to write a Business Continuity Plan
How to write a Business Continuity PlanHow to write a Business Continuity Plan
How to write a Business Continuity Plan
 
Generative AI for Technical Writer or Information Developers
Generative AI for Technical Writer or Information DevelopersGenerative AI for Technical Writer or Information Developers
Generative AI for Technical Writer or Information Developers
 
Anypoint Exchange: It’s Not Just a Repo!
Anypoint Exchange: It’s Not Just a Repo!Anypoint Exchange: It’s Not Just a Repo!
Anypoint Exchange: It’s Not Just a Repo!
 
What is Artificial Intelligence?????????
What is Artificial Intelligence?????????What is Artificial Intelligence?????????
What is Artificial Intelligence?????????
 
A Journey Into the Emotions of Software Developers
A Journey Into the Emotions of Software DevelopersA Journey Into the Emotions of Software Developers
A Journey Into the Emotions of Software Developers
 
DevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platformsDevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platforms
 
Sample pptx for embedding into website for demo
Sample pptx for embedding into website for demoSample pptx for embedding into website for demo
Sample pptx for embedding into website for demo
 
unit 4 immunoblotting technique complete.pptx
unit 4 immunoblotting technique complete.pptxunit 4 immunoblotting technique complete.pptx
unit 4 immunoblotting technique complete.pptx
 
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
 
Use of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptx
Use of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptxUse of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptx
Use of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptx
 
Advanced Computer Architecture – An Introduction
Advanced Computer Architecture – An IntroductionAdvanced Computer Architecture – An Introduction
Advanced Computer Architecture – An Introduction
 
The Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptx
The Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptxThe Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptx
The Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptx
 
Training state-of-the-art general text embedding
Training state-of-the-art general text embeddingTraining state-of-the-art general text embedding
Training state-of-the-art general text embedding
 
A Deep Dive on Passkeys: FIDO Paris Seminar.pptx
A Deep Dive on Passkeys: FIDO Paris Seminar.pptxA Deep Dive on Passkeys: FIDO Paris Seminar.pptx
A Deep Dive on Passkeys: FIDO Paris Seminar.pptx
 
Unraveling Multimodality with Large Language Models.pdf
Unraveling Multimodality with Large Language Models.pdfUnraveling Multimodality with Large Language Models.pdf
Unraveling Multimodality with Large Language Models.pdf
 

Intro to Pinax: Kickstarting Your Django Apps

  • 1. Intro to Pinax Kickstarting Your Django Apps SyPy - November 2011 Roger Barnes @mindsocket roger@mindsocket.com.au http://gplus.to/mindsocket
  • 2. Who am I  Roger Barnes BTech ICS  By day: Tech Lead/Applications Developer Java :(  By night: Up and coming Python ninja
  • 3. Topics  Intro to Django  Intro to Pinax  Alternatives  Development Tips  Q&A
  • 4. What is Django ”The web framework for perfectionists with deadlines” Initially developed in an online news environment Designed for rapid development
  • 5. Django Framework  Object-relational mapper  Automatic admin interface  Elegant URL design  Template system  Caching  More...  i18n, syndication, generic views, schema generation, development server, user model, scheduled jobs, test harness, ...
  • 6. Django is... … really well documented https://docs.djangoproject.com
  • 7. Example: More Betterer  My first Django app  Goal 1: Learn some Python and Django  Goal 2: Find out what photos people liked
  • 8. Example: More Betterer  Very simple models  Item (an image)  Challenge (a showdown between 2 items)  Item manager  counts challenge votes  provides ordered list
  • 9. st Lessons from 1 Django app  Django alone isn't a quickstart/shortcut for  common web 2.0 functionality  OAuth, social, tagging, voting  front-end  HTML, CSS, JS  This is true of many web frameworks  Either front- or back-end focussed  Some best practices aren't obvious  or are evolving (eg class-based views in 1.3)
  • 10. What is Pinax System for kickstarting Django projects ”Pinax takes care of the things that many sites have in common so you can focus on what makes your site different” Quickly go from idea to launch (and beyond)
  • 11. What is Pinax  Social friendly  Comments  Voting  Notifications  Profiles/Accounts/OAuth  ...  Startup friendly  Private beta  Invite codes  Starter projects
  • 12. When to use Pinax Great for building and maintaining multiple sites … quickly Not as much benefit for a big enterprise app
  • 13. Pinax - Pros and cons  Pros  Has a lot to offer  Easier to start with a pinax starter and adapt  Cons  Misunderstood  No recent releases (but active branches on github)  Django compatibility (Pinax 0.9a1 needed tweaks to work with Django 1.3)  Overall: worth it
  • 14. Example: Now and Then An application for aligning and overlaying historical images with modern equivalents
  • 15. Example: Now and Then  My 2nd Django app  Goal 1: Libraryhack entry - http://libraryhack.org/  Goal 2: Learn more Django & Python!  Approx. 1 month development  Started without Pinax  got stuck on ”common functionality”  Pinax helped get past theme and account management issues
  • 17. Pinax – Primary Features  Project conventions  Layout  Deployment  Requirements - pip dependencies  Templates - quick prototyping  Core and reusable apps  Back- and front-end functionality  Starter projects  Basis for a Django site, several options
  • 18. Pinax - Layout |-- apps |-- fixtures | |-- about | `-- initial_data.json | | |-- models.py |-- locale | | |-- urls.py | |-- ... | | |-- views.py |-- manage.py | |-- my_foo_app |-- media | | |-- ... | |-- css | |-- ... | | `-- site_tabs.css | | |-- ... | |-- ... |-- deploy |-- requirements | |-- pinax.fcgi | |-- base.txt | `-- pinax.wsgi | `-- project.txt |-- dev.db |-- settings.py |-- templates | |-- about | |-- account | |-- ... |-- tests | |-- ... |-- urls.py
  • 19. Pinax For Now and Then:  Requirements (pip) PIL  Base aino-convert what pinax needs django-extensions django-memcache-status  Project django-jenkins selenium what you want to add pyvirtualdisplay MySQL-python python-memcached flickrapi south django-tagging django-voting PyYAML nltk minidetector geopy
  • 20. Pinax  Apps  account and profile management  openid, e-mail verification, password management  notifications and activity streams  private betas and waiting lists  badges  tagging  wikis, forums and blogs  task tracking  friend and follower relations
  • 21. Pinax  Starter projects  zero  basic  account  static  private_beta  cms_company  intranet  social  cms_holidayhouse  company  sample_group  code
  • 22. Pinax Fairly well documented http://pinaxproject.com/docs/ Code on github
  • 23. Pinax project status  Still in active development (see github)  A new release pending  Better ecosystem management  Trying to solve the ”misunderstood” problem  http://pinaxproject.com/ecosystem/
  • 24. Pinax isn't  A silver bullet for front-end  BYO UX, design, HTML, CSS, JS skills  Some solutions  Twitter bootstrap – Pinax has a new theme  Growing collection of other themes on offer  HTML5 boilerplate  Other template + less/CSS + Javascript library
  • 25. Pinax – Idea to Launch The next big social network mytweetbooktubelyplus.com Domain name is not currently registered. Available for you now!
  • 26. Pinax – Idea to Launch  Steps  mkvirtualenv --no-site-packages mytweetbooktubelyplus  pip install Pinax  pinax-admin setup_project -b social mytweetbooktubelyplus  cd mytweetbooktubelyplus/  git init  git commit -am ”Initial commit”
  • 27. Pinax – Idea to Launch  Steps (continued)  edit settings.py  pip install PIL  Better: add to requirements or remove dependent app  python manage.py syncdb  python manage.py runserver    Profit!
  • 28. Alternatives to Pinax  Hand-pick your own bundled apps  PyPI  Djangopackages.com  Other starter projects on github  Eg: django-party-pack
  • 29. Development tips  South  Schema management extension for Django  Handles updates to existing/populated DB  eg: Add/change a column in dev  Generate/deploy code to do same in test/prod  Integrates with django's management tools
  • 30. Development tips  Environment/package management  virtualenv + pip (+ virtualenvwrapper)  For more complex deploys, look at buildout  local_settings.py (dev/test/prod)  Contains environment specific config  And passwords, add to .gitignore In settings.py try: from local_settings import * except ImportError: pass
  • 31. Development tips - Testing  Django + unittest2  Fixtures for testing models (tests.json)  Django Client to test views (request/response) def test_point_list(self): """Tests that point_list returns a valid list of lists""" fusion = Fusion() fusion.points = "1,2,3,4,5,6,7,8" self.failUnlessEqual(fusion.point_list(), [[1,2,3,4],[5,6,7,8]]) def test_fusion_edit_update(self): self._login() response = self.client.post('/fusion/edit/1/', {'points': '', 'cropthen': ''}) self.assertRedirects(response, '/fusion/view/1/')
  • 32. Development tips – Testing  TODO UI tests  Selenium or similar to test UI, esp. javascript def test_via_selenium(self): from pyvirtualdisplay import Display from selenium import webdriver display = Display(visible=0, size=(800, 600)) display.start() browser = webdriver.Firefox() browser.get('http://myurl...') # TODO …
  • 33. Dev tips - Continuous Integration  Jenkins  Build triggered by commit (or polled)  unittest2  django-jenkins  coverage
  • 34. Development tips - Deployment  Fast all the way to production  git pull - ok for simple application  TODO: Build pipeline  TODO: Continuous Deployment  Production performance  Apache + mod-wsgi – ok  Use pinax.wsgi  May need a little hacking to get paths right  TODO: try nginx + uWSGI or similar  TODO: High availability + reverse proxy
  • 35. Development tips – Source Control  DVCS good - Git(Hub), several alternatives  Avoid old tech (svn, cvs, vss)  Embrace branching, merging, regular commits  Fork other people's repos  Pull new changes  Pull-request – send your improvements upstream  Works with pip pip install -e git+https://github.com/pinax/pinax-theme-bootstrap#egg=pinax-theme-bootstrap
  • 37. References  Django  https://www.djangoproject.com/  http://djangopackages.com/  Pinax  http://pinaxproject.com/ & http://pinaxproject.com/ecosystem/  https://github.com/pinax/pinax  http://pinaxproject.com/blog/2011/10/10/djangocon-talk-pinax-after-three-years  My apps/code  http://bit.ly/morebetterer  http://nowandthen.mindsocket.com.au/  https://github.com/mindsocket/  Twitter Bootstrap  http://twitter.github.com/bootstrap/
  • 38. Q&A