Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Python para desarrolladores web

jmortegac
February 13, 2016

Python para desarrolladores web

Python para desarrolladores web

jmortegac

February 13, 2016
Tweet

More Decks by jmortegac

Other Decks in Programming

Transcript

  1. http://creativecommons.org/licenses/by-nc-sa/3.0/
    Leganés, 11 y 12 de
    febrero
    José Manuel Ortega
    Leganés, 11 y 12 de febrero
    José Manuel Ortega
    @jmortegac
    Python para desarrolladores web

    View Slide

  2. 2 Python para desarrolladores web
    https://speakerdeck.com/jmortega

    View Slide

  3.  Stack,Django,Flask,Pyramid
     Requests
     Scraping(BeautifulSoap,Scrapy)
     Bokeh
     API Rest (Django-Rest-Framework)
     Twitter API
    3 Python para desarrolladores web
    Agenda

    View Slide

  4. 4 Python para desarrolladores web
    Python Zen

    View Slide

  5. Stack
    5 Python para desarrolladores web

    View Slide

  6. Django
    6 Python para desarrolladores web

    View Slide

  7. Django
    7
     Most popular Python web framework
     Full stack web framework
     Django-ORM
     Template Engine
     HTTP Request/Response
     URL Routing Mechanism
     Testing
     Dev Server (WSGI)
    Python para desarrolladores web

    View Slide

  8. Django
    8
     Model Template View
     Model → modelo de datos (models.py)
     View →vistas de datos (views.py): qué datos se presentan
     Template → plantillas HTML:cómo se presentan los datos
    Python para desarrolladores web

    View Slide

  9. Django
    9
     django.contrib.auth Un sistema de autenticación
     django.contrib.contenttypes  Un framework para
    tipos de contenidos
     django.contrib.sessions  Un framework para
    manejar sesiones
    DATABASES = {
    'default': {
    'ENGINE': 'django.db.backends.sqlite3',
    'NAME': 'mysite.db',
    }
    }
    Python para desarrolladores web

    View Slide

  10. Django ORM
    10 Python para desarrolladores web

    View Slide

  11. Django Templates
    11
     Templates are composed by Blocks
    Python para desarrolladores web

    View Slide

  12. Django example project
    12 Python para desarrolladores web

    View Slide

  13. Django example project
    13 Python para desarrolladores web

    View Slide

  14. Django-oscar
    14
    http://oscarcommerce.com
    https://github.com/django-oscar/django-oscar
    Python para desarrolladores web

    View Slide

  15. Flask
    15
     Microframework
     Built in development server and debugger
     Oriented to small applications with simpler
    requirements.
    Python para desarrolladores web

    View Slide

  16. Flask example
    16 Python para desarrolladores web

    View Slide

  17. Flask
    17 Python para desarrolladores web

    View Slide

  18. Flask
    18 Python para desarrolladores web
    http://httpbin.org

    View Slide

  19. Pyramid
    19
     Python3 compatible
     Templates with Chamaleon
     Like django has his own bootstraping
    toolpcreate
    Python para desarrolladores web

    View Slide

  20. Pyramid
    20
    pcreate -s starter hello_pyramid
    ├── CHANGES.txt
    ├── development.ini
    ├── MANIFEST.in
    ├── production.ini
    ├── hello_pyramid
    │ ├── __init__.py
    │ ├── static
    │ │ ├── pyramid-16x16.png
    │ │ ├── pyramid.png
    │ │ ├── theme.css
    │ │ └── theme.min.css
    │ ├── templates
    │ │ └── mytemplate.pt
    │ ├── tests.py
    │ └── views.py
    ├── README.txt
    └── setup.py
    Python para desarrolladores web

    View Slide

  21. Pyramid
    Learn REST API with Python in 90 minutes
    21

    View Slide

  22. Pyramid
    22 Python para desarrolladores web
    Pserve development.ini

    View Slide

  23. Pyramid
    23
    https://badges.fedoraproject.org
    https://github.com/fedora-infra/tahrir
    Python para desarrolladores web

    View Slide

  24. Comparing web frameworks
    24
    Django Pyramid Flask
    ORM Django-
    ORM
    Bootstrapping django-
    admin
    pcreate
    Templates Chameleon
    Migrations
    Admin
    interface
    Visual debug
    Python para desarrolladores web

    View Slide

  25. Requests Module
     Python’s standard urllib2,httplib module provides most
    of the HTTP capabilities you need, but the API is
    thoroughly broken.
     Python HTTP: Requests. Beautiful, simple, Pythonic.
    25
    http://www.python-requests.org
    Python para desarrolladores web

    View Slide

  26. Use requests module
     Install requests module (pip install requests)
    http://docs.python-requests.org/en/latest/user/install/#install
     Use it interactive mode
    $ python
    >>> import requests
    >>> r = requests.get("http://httpbin.org/get")
    26 Python para desarrolladores web

    View Slide

  27. Use requests module
    27 Python para desarrolladores web

    View Slide

  28. Use requests module
    28 Python para desarrolladores web

    View Slide

  29. Beautiful Soup
    29
     Librería que permite el parseo de páginas web
     Soporta parsers como lxml,html5lib
     Instalación
     pip install lxml
     pip instlal html5lib
     pip install beautifulsoup4
    Python para desarrolladores web

    View Slide

  30. Obtain links with bs4
    30 Python para desarrolladores web

    View Slide

  31. Obtain links with bs4
    31 Python para desarrolladores web

    View Slide

  32. Extract images with lxml
    32
    import requests
    from lxml import html
    Python para desarrolladores web

    View Slide

  33. Extract program
    33 Python para desarrolladores web

    View Slide

  34. JSON in python
    34
     import json
     json_dumps(data, sort_keys=True)
     Maybe allow human readable output
     json_dumps(data, sort_keys=True, indent=4)
    Python para desarrolladores web

    View Slide

  35. Scrapy
    35 Python para desarrolladores web

    View Slide

  36. Scrapy / pip install scrapy
    Learn REST API with Python in 90 minutes
    36

    View Slide

  37. Scrapy shell
    37
    scrapy shell
    from scrapy. import Selector
    hxs = Selector(response)
    Info = hxs.select(‘//div[@class=“slot-inner”]’)
    Python para desarrolladores web

    View Slide

  38. Scrapy shell
    38 Python para desarrolladores web

    View Slide

  39. Scrapy spiders
    39 Python para desarrolladores web

    View Slide

  40. Scrapy spiders
    40
    $ scrapy crawl
    $ scrapy crawl -o items.json -t json
    $ scrapy crawl -o items.csv -t csv
    $ scrapy crawl -o items.xml -t xml
    Python para desarrolladores web

    View Slide

  41. Twisted
    41
     Event-driven networking engine
     Procesar eventos de forma asíncrona
     https://twistedmatrix.com
    Python para desarrolladores web

    View Slide

  42. Bokeh
    42
     Interactive, browser-based visualization for big
    data, driven from Python
     http://bokeh.pydata.org
     Rich interactivity over large datasets
     HTML5 Canvas
     Integration with Google Maps
     http://bokeh.pydata.org/en/latest/docs/gallery.html
    Python para desarrolladores web

    View Slide

  43. Bokeh
    43 Python para desarrolladores web

    View Slide

  44. Bokeh Google maps
    44 Python para desarrolladores web

    View Slide

  45. Bokeh Google maps
    45 Python para desarrolladores web

    View Slide

  46. Javascript code generation
    46 Python para desarrolladores web

    View Slide

  47. Bokeh charts
    47 Python para desarrolladores web

    View Slide

  48. API Rest in Python
    48
     Django Rest Framework (DRF)
    pip install djangorestframework
    Python para desarrolladores web

    View Slide

  49. Django Rest Framework
    49
    Serializers & Views
    Python para desarrolladores web
    class PostSerializer(serializers.HyperlinkedModelSerializer):
    class Meta:
    model = Post
    fields = ('author', 'title', 'text', 'created_date','published_date')
    class PostViewSet(viewsets.ModelViewSet):
    queryset = Post.objects.all()
    serializer_class = PostSerializer
    from rest_framework import routers, serializers, viewsets

    View Slide

  50. Django Rest Framework
    50
    Urls
    Python para desarrolladores web

    View Slide

  51. Django Rest Framework
    51 Python para desarrolladores web

    View Slide

  52. Twitter API
    52
     https://apps.twitter.com
     Oauth2
     Consumer API (API KEY)
     Consumer Secret (API Secret)
     Access Token
     Access Token Secret
    Python para desarrolladores web

    View Slide

  53. Twitter API
    53
     Python-twitter
     https://github.com/bear/python-twitter
     Tweepy
     https://github.com/tweepy/tweepy
    Python para desarrolladores web

    View Slide

  54. Tweepy
    54
    import tweepy
    from tweepy import OAuthHandler
    consumer_key = 'YOUR-CONSUMER-KEY'
    consumer_secret = 'YOUR-CONSUMER-SECRET'
    access_token = 'YOUR-ACCESS-TOKEN'
    access_secret = 'YOUR-ACCESS-SECRET'
    auth = OAuthHandler(consumer_key, consumer_secret)
    auth.set_access_token(access_token, access_secret)
     api = tweepy.API(auth)
    Python para desarrolladores web

    View Slide

  55. Tweepy
    Learn REST API with Python in 90 minutes
    55
     Timeline
     Tweet list
     Trending topic
    for status in tweepy.Cursor(api.home_timeline).items(10):
    print(status.text)
    for tweet in tweepy.Cursor(api.user_timeline).items():
    process_or_store(tweet._json)
    def getTrends():
    trends = api.trends_place(1)[0]['trends']
    return trends

    View Slide

  56. Python-twitter
    56
    import twitter
    apiTwitter = twitter.Api(consumer_key="xxx", consumer_secret="xxx",
    access_token_key="xxx", access_token_secret="xxx")
    query = apiTwitter.GetSearch("#T3chFest2016“,count=50)
    for result in query:
    tweet = {}
    tweet['text'] = result.text.encode('utf-8')
    tweet['date'] = result.created_at.encode('utf-8')
    tweet['favorite_count'] = result.favorite_count
    tweet['lang'] = result.lang.encode('utf-8')
    tweet['retweet_count'] = result.retweet_count
    tweet['account'] = result.user.screen_name.encode('utf-8')
    twitter_results.append(tweet)
    Python para desarrolladores web

    View Slide

  57. 57 Python para desarrolladores web
    Python-twitter

    View Slide

  58. Python-twitter
    58
    outfile = open('twitter.json','wb')
    for twitter_result in twitter_results:
    line = json.dumps(twitter_result) + "\n"
    outfile.write(line)
    Python para desarrolladores web

    View Slide

  59. Python in the cloud
    59 Python para desarrolladores web

    View Slide

  60. Python in the cloud
    60 Python para desarrolladores web

    View Slide

  61. Python in the cloud
    61 Python para desarrolladores web

    View Slide

  62. Git
     https://github.com/jmortega/t3chfest_python_examples
    62 Python para desarrolladores web

    View Slide

  63. References
     Django project: http://www.djangoproject.com
     Flask: http://flask.pocoo.org
     Pyramid: http://www.pylonsproject.org
     Requests python module: http://www.python-requests.org
     BeautifulSoup: http://www.crummy.com/software/BeautifulSoup
     Bokeh:http://bokeh.pydata.org
     Django Rest:http://www.django-rest-framework.org
     https://www.pythonanywhere.com
    63 Python para desarrolladores web

    View Slide

  64. Thank you!
    José Manuel Ortega <@jmortegac>

    View Slide