An overview of the Django rapid application development framework. Topics include the history of the framework, an architectural overview, how to get started, and a brief comparison to Ruby on Rails.
This is the slides I used when I shared my humble insight on Django to the students in University of Taipei in 2016. Please feel free to correct me if there is anything wrong.
Django is a free and open source web application framework, written in Python, which follows the Model–View–Controller architectural pattern.
It focuses on automating as much as possible and adhering to the DRY principle
I've written a lot of Django code in my career, some slow, and some fast; my aim is to share a few of the techniques you can use to go from 300ms response times to 30ms. We'll travel up and down the stack, looking to identify, monitor and solve performance issues, while dodging those which just aren't worth solving.
Full video is available at: https://skillsmatter.com/skillscasts/6628-django-performance-recipes
django forms are becoming disconnected form the frontend as we move towards API heavy systems. We attempt to bridge the gap by delivering form definition over API, render it in the frontend dynamically using Backbone & Handlebars, provide mechanism for submitting & validating forms over API.
This is the slides I used when I shared my humble insight on Django to the students in University of Taipei in 2016. Please feel free to correct me if there is anything wrong.
Django is a free and open source web application framework, written in Python, which follows the Model–View–Controller architectural pattern.
It focuses on automating as much as possible and adhering to the DRY principle
I've written a lot of Django code in my career, some slow, and some fast; my aim is to share a few of the techniques you can use to go from 300ms response times to 30ms. We'll travel up and down the stack, looking to identify, monitor and solve performance issues, while dodging those which just aren't worth solving.
Full video is available at: https://skillsmatter.com/skillscasts/6628-django-performance-recipes
django forms are becoming disconnected form the frontend as we move towards API heavy systems. We attempt to bridge the gap by delivering form definition over API, render it in the frontend dynamically using Backbone & Handlebars, provide mechanism for submitting & validating forms over API.
Django makes it so easy to get started; ``manage.py runserver`` and away you go. But deploying an application so that the system can provide redundancy and scalability requires some heavier lifting: package installs, configuration settings, multiple servers, security, backups, etc.
Ansible is a python-based configuration management tool which helps automate and repeat deployments whether the hardware is local or in the cloud. We'll be covering how to leverage existing configurations, write your own and sharing best practices for deploying django applications.
Does Django scale? How to manage traffic peaks? What happens when the database grows too big? How to find (and fix) the bottlenecks?
We will overview the basics concepts, we'll use metrics to find bottlenecks, and finally we'll see some tips and tricks to improve the scalability and the performance of a Django project.
Main topics:
- System architecture
- Database performance
- Finding bottlenecks
- Monitoring, profiling, debugging
- Query optimization
- Dealing with a slow admin
- Queues and workers
- Faster tests
Talk given at #EuroPython 2016: https://ep2016.europython.eu/conference/talks/efficient-django
This presentation summarizes tips, tricks, patterns and best practices on Django development. This presentation is prepared based on the great book "Two Scoops of Django: Best Practices For Django 1.5"
A talk delivered to the Philadelphia Python User Group on 09/17/15
Models form the backbone of most Django sites. They contain the fields and behaviors of the data your site is using. The proper planning and implementation of models is one of the first steps to creating powerful and reusable Django apps. It’s also crucial for avoiding pitfalls and complex workarounds down the line. In this talk you’ll hear about: -
• Django model fields and methods
• Model inheritance
• Relational databases
• Migrations
• How to access the data stored within your models
Slides from our CodeMash 2013 Precompiler session, "Web Development with Python and Django", including a breezy introduction to the Python programming language and the Django web framework. The example code repository is available at https://github.com/finiteloopsoftware/django-precompiler/
(BDT402) Performance Profiling in Production: Analyzing Web Requests at Scale...Amazon Web Services
Code profiling gives a rich, detailed view of runtime performance. However, it's difficult to achieve in production: for even a small fraction of web requests, huge challenges in scalability, access, and ease of use appear. Despite this, Yelp profiles a nontrivial fraction of its traffic by combining Amazon EC2, Amazon EMR, and Amazon S3. Developers can search, sort, filter, and combine interesting profiles; during a site slowdown or page failure, this allows a fast diagnosis and speedy recovery. Some of our analyses run nightly, while others run in real-time via Storm topologies. This session includes our use cases for code profiling, its benefits, and the implementation of its handlers and analysis flows. We include both performance results and implementation challenges of our MapReduce and Storm jobs, including code overviews. We also touch on issues such as concurrent logging, cross-data center replication, job scheduling, and API definitions.
A Web Framework that shortens the Time it takes to develop software in at least an Order of Magnitude. while also tremendously minimizing Effort Pain, Time waste, Complexity, Cost of change & more
This presentation shall address the web2py web framework, my favorite way to develop web apps.
web2py is a free, open-source web framework for agile development of secure database-driven web applications; it is written in Python and programmable in Python. web2py is a full-stack framework, meaning that it contains all the components you need to build fully functional web applications.
Ease of use is the primary goal for web2py. For us, this means reducing the learning and deployment time. This is why web2py is a full-stack framework without dependencies. It requires no installation and has no configuration files. Everything works out of the box, including a web server, database and a web-based IDE that gives access to all the main features.
I will show you why web2py can make you more productive by bringing the result of a reflection over the best ideas of the most popular MVC based web frameworks enforcing the best practices for a fast, scalable and secure web application with minimal effort. There will be a live demo where you can get a faster grasp on how does it work and how fun it can be.
For more: www.web2py.com
How to generate customized java 8 code from your databaseSpeedment, Inc.
Did you know that database classes, that require many lines of Java and SQL code, may be replaced with a single line of Java 8 code? In this tutorial session you will learn how to use standard Java 8 Streams as an alternative to traditional Object Relational Mappers (ORM). We will use the open-source tool Speedment to show how development speed can be increased and how the application code can be more concise and run faster.
Silicon Valley JUG - How to generate customized java 8 code from your databaseSpeedment, Inc.
The best code is the one you never need to write. Using code generation and automated builds you can minimize the risk of human error when developing software, but how do you maintain control over code when large parts of it is handed over to a machine? In this tutorial, you will learn how to use open-source software to create and control code automation. You will see how you can generate a completely object-oriented domain model by automatically analyzing your database schemas. Every aspect of the process is transparent and configurable, giving you as a developer 100% control of the generated code. This will not only increase your productivity, but also help you build safer and more maintainable Java applications.
Python - A Comprehensive Programming LanguageTsungWei Hu
Python - A Comprehensive Programming Language, talk at
1. CSIE, Providence University, 2009/05/08
2. CSIE, National Taichung Institute of Technology, 2009/10/29
BackboneJS Training - Giving Backbone to your applicationsJoseph Khan
BackboneJS Training PPT Slides. Giving Backbone to your applications.
Backbone.js gives structure to web applications by providing models with key-value binding and custom events, collections with a rich API of enumerable functions, views with declarative event handling, and connects it all to your existing API over a RESTful JSON interface.
jQuery Makes Writing JavaScript Fun Again (for HTML5 User Group)Doris Chen
Get frustrated by cross-browser incompatibility? Hate to develop application using JavaScript? jQuery is a powerful JavaScript library that can enhance your websites regardless of your background. jQuery is fast, lean, simple and hugely expandable, enabling you to build compelling web applications quickly and easily. In this session, we will start with a quick introduction of jQuery, illustrate what’s so good about jQuery, and demonstrate step by step how to develop jQuery Ajax application efficiently with database, web services, OData, NetFlix and ASP.NET MVC. Microsoft is now shipping, supporting, and contributing to jQuery, with ASP.NET and Visual Studio. New features which will be available in the next release of jQuery such as globalization, templating and data-linking will be introduced in the session as well.
Accelerate your Kubernetes clusters with Varnish CachingThijs Feryn
A presentation about the usage and availability of Varnish on Kubernetes. This talk explores the capabilities of Varnish caching and shows how to use the Varnish Helm chart to deploy it to Kubernetes.
This presentation was delivered at K8SUG Singapore. See https://feryn.eu/presentations/accelerate-your-kubernetes-clusters-with-varnish-caching-k8sug-singapore-28-2024 for more details.
Connector Corner: Automate dynamic content and events by pushing a buttonDianaGray10
Here is something new! In our next Connector Corner webinar, we will demonstrate how you can use a single workflow to:
Create a campaign using Mailchimp with merge tags/fields
Send an interactive Slack channel message (using buttons)
Have the message received by managers and peers along with a test email for review
But there’s more:
In a second workflow supporting the same use case, you’ll see:
Your campaign sent to target colleagues for approval
If the “Approve” button is clicked, a Jira/Zendesk ticket is created for the marketing design team
But—if the “Reject” button is pushed, colleagues will be alerted via Slack message
Join us to learn more about this new, human-in-the-loop capability, brought to you by Integration Service connectors.
And...
Speakers:
Akshay Agnihotri, Product Manager
Charlie Greenberg, Host
UiPath Test Automation using UiPath Test Suite series, part 3DianaGray10
Welcome to UiPath Test Automation using UiPath Test Suite series part 3. In this session, we will cover desktop automation along with UI automation.
Topics covered:
UI automation Introduction,
UI automation Sample
Desktop automation flow
Pradeep Chinnala, Senior Consultant Automation Developer @WonderBotz and UiPath MVP
Deepak Rai, Automation Practice Lead, Boundaryless Group and UiPath MVP
GraphRAG is All You need? LLM & Knowledge GraphGuy Korland
Guy Korland, CEO and Co-founder of FalkorDB, will review two articles on the integration of language models with knowledge graphs.
1. Unifying Large Language Models and Knowledge Graphs: A Roadmap.
https://arxiv.org/abs/2306.08302
2. Microsoft Research's GraphRAG paper and a review paper on various uses of knowledge graphs:
https://www.microsoft.com/en-us/research/blog/graphrag-unlocking-llm-discovery-on-narrative-private-data/
JMeter webinar - integration with InfluxDB and GrafanaRTTS
Watch this recorded webinar about real-time monitoring of application performance. See how to integrate Apache JMeter, the open-source leader in performance testing, with InfluxDB, the open-source time-series database, and Grafana, the open-source analytics and visualization application.
In this webinar, we will review the benefits of leveraging InfluxDB and Grafana when executing load tests and demonstrate how these tools are used to visualize performance metrics.
Length: 30 minutes
Session Overview
-------------------------------------------
During this webinar, we will cover the following topics while demonstrating the integrations of JMeter, InfluxDB and Grafana:
- What out-of-the-box solutions are available for real-time monitoring JMeter tests?
- What are the benefits of integrating InfluxDB and Grafana into the load testing stack?
- Which features are provided by Grafana?
- Demonstration of InfluxDB and Grafana using a practice web application
To view the webinar recording, go to:
https://www.rttsweb.com/jmeter-integration-webinar
Software Delivery At the Speed of AI: Inflectra Invests In AI-Powered QualityInflectra
In this insightful webinar, Inflectra explores how artificial intelligence (AI) is transforming software development and testing. Discover how AI-powered tools are revolutionizing every stage of the software development lifecycle (SDLC), from design and prototyping to testing, deployment, and monitoring.
Learn about:
• The Future of Testing: How AI is shifting testing towards verification, analysis, and higher-level skills, while reducing repetitive tasks.
• Test Automation: How AI-powered test case generation, optimization, and self-healing tests are making testing more efficient and effective.
• Visual Testing: Explore the emerging capabilities of AI in visual testing and how it's set to revolutionize UI verification.
• Inflectra's AI Solutions: See demonstrations of Inflectra's cutting-edge AI tools like the ChatGPT plugin and Azure Open AI platform, designed to streamline your testing process.
Whether you're a developer, tester, or QA professional, this webinar will give you valuable insights into how AI is shaping the future of software delivery.
Smart TV Buyer Insights Survey 2024 by 91mobiles.pdf91mobiles
91mobiles recently conducted a Smart TV Buyer Insights Survey in which we asked over 3,000 respondents about the TV they own, aspects they look at on a new TV, and their TV buying preferences.
Let's dive deeper into the world of ODC! Ricardo Alves (OutSystems) will join us to tell all about the new Data Fabric. After that, Sezen de Bruijn (OutSystems) will get into the details on how to best design a sturdy architecture within ODC.
UiPath Test Automation using UiPath Test Suite series, part 4DianaGray10
Welcome to UiPath Test Automation using UiPath Test Suite series part 4. In this session, we will cover Test Manager overview along with SAP heatmap.
The UiPath Test Manager overview with SAP heatmap webinar offers a concise yet comprehensive exploration of the role of a Test Manager within SAP environments, coupled with the utilization of heatmaps for effective testing strategies.
Participants will gain insights into the responsibilities, challenges, and best practices associated with test management in SAP projects. Additionally, the webinar delves into the significance of heatmaps as a visual aid for identifying testing priorities, areas of risk, and resource allocation within SAP landscapes. Through this session, attendees can expect to enhance their understanding of test management principles while learning practical approaches to optimize testing processes in SAP environments using heatmap visualization techniques
What will you get from this session?
1. Insights into SAP testing best practices
2. Heatmap utilization for testing
3. Optimization of testing processes
4. Demo
Topics covered:
Execution from the test manager
Orchestrator execution result
Defect reporting
SAP heatmap example with demo
Speaker:
Deepak Rai, Automation Practice Lead, Boundaryless Group and UiPath MVP
6. Topics
• What is Django
• History of Django
• Whirlwind Tour
• How to Get Started - Admin Demo
7. Topics
• What is Django
• History of Django
• Whirlwind Tour
• How to Get Started - Admin Demo
• Killer Features
8. Topics
• What is Django
• History of Django
• Whirlwind Tour
• How to Get Started - Admin Demo
• Killer Features
• Application Re-use and Pinax
9. Topics
• What is Django
• History of Django
• Whirlwind Tour
• How to Get Started - Admin Demo
• Killer Features
• Application Re-use and Pinax
• Framework Death-match
12. What is Django?
• Not a Gypsy Jazz Guitarist
• Web Application
Development Framework
written in and for Python
13. What is Django?
• Not a Gypsy Jazz Guitarist
• Web Application
Development Framework
written in and for Python
• Not a CMS System
14. What is Django?
• Not a Gypsy Jazz Guitarist
• Web Application
Development Framework
written in and for Python
• Not a CMS System
• Sometimes called Python’s
Ruby on Rails (RoR)
20. Jump to today:
Guiding Principles
• Loose Coupling and tight cohesion
21. Jump to today:
Guiding Principles
• Loose Coupling and tight cohesion
• Less code
22. Jump to today:
Guiding Principles
• Loose Coupling and tight cohesion
• Less code
• Quick development
23. Jump to today:
Guiding Principles
• Loose Coupling and tight cohesion
• Less code
• Quick development
• DRY
24. Jump to today:
Guiding Principles
• Loose Coupling and tight cohesion
• Less code
• Quick development
• DRY
• Explicit is better than implicit
25. Jump to today:
Guiding Principles
• Loose Coupling and tight cohesion
• Less code
• Quick development
• DRY
• Explicit is better than implicit
• Consistency
26. For Free!!!
• Very Useful Admin CRUD
• Templating - lots of useful rendering bits
• Form Handling
• i18n - full Unicode support
• Sessions / User Auth / Role-based Perms
• Object-Relational Mapping
Beer photo by Lori Spindler
30. Architecture
RDBMS
Storage ORM Fixtures
Model
Signals Forms Template
URL Resolver View Template Loader
Middleware Middleware
Request Response
31. Deep Dive: Models
from tagging.fields import TagField
class Post(models.Model):
author = models.ForeignKey(Author)
title = models.CharField(max_length=200)
slug = models.SlugField(max_length=200, unique_for_month='pub_date')
body = models.TextField()
TYPE_CHOICES = (
('rant', 'Rant'),
('tirade', 'Tirade'),
)
type = models.CharField(choices=TYPE_CHOICES, max_length=50)
pub_date = models.DateTimeField(auto_now_add=True)
is_active = models.BooleanField(default=True)
tags = TagField(blank=True, null=True)
class Meta:
unique_together = ('title', 'type')
ordering = ['-pub_date']
32. Architecture
RDBMS
Storage ORM Fixtures
Model
Signals Forms Template
URL Resolver View Template Loader
Middleware Middleware
Request Response
33. Deep Dive: DB API
post = Post(title=‘Foo’, body=‘Bar’)
post.type = ‘rant’
post.save()
34. Deep Dive: DB API
post = Post(title=‘Foo’, body=‘Bar’)
post.type = ‘rant’
post.save()
posts = Post.objects.all()
posts = Post.objects.all()[:5]
posts = Post.objects.filter(post_type=‘rant’)
posts = Post.objects.filter(author__name=‘Rob’)
posts = Post.objects.filter(author__name=‘Rob’).
filter(title__contains=‘django’).order_by(‘type’)
post = Post.objects.get(id=24)
35. Architecture
RDBMS
Storage ORM Fixtures
Model
Signals Forms Template
URL Resolver View Template Loader
Middleware Middleware
Request Response
36. Deep Dive: Forms
# Basic Form
class ContactForm(forms.Form):
subject = forms.CharField(max_length=100)
message = forms.CharField()
sender = forms.EmailField()
cc_myself = forms.BooleanField(required=False)
37. Deep Dive: Forms
# Basic Form
class ContactForm(forms.Form):
subject = forms.CharField(max_length=100)
message = forms.CharField()
sender = forms.EmailField()
cc_myself = forms.BooleanField(required=False)
# Form based on a model
class PostForm(forms.ModelForm):
class Meta:
model = Post
42. Architecture
RDBMS
Storage ORM Fixtures
Model
Signals Forms Template
URL Resolver View Template Loader
Middleware Middleware
Request Response
43. Architecture
RDBMS
Storage ORM Fixtures
Model
Signals Forms Template
URL Resolver View Template Loader
Middleware Middleware
Request Response
44. Deep Dive: Templates
<html><body>
{% if posts %}
{% for post in posts %}
{{ post.author }}: {{ post.title }}
{% endfor %}
{% endif %}
45. Deep Dive: Templates
<html><body>
{% if posts %}
{% for post in posts %}
{{ post.author }}: {{ post.title }}
{% endfor %}
{% endif %}
<form method=”post”>
<table>
{{ form }}
</table>
</form>
46. Deep Dive: Templates
<html><body>
{% if posts %}
{% for post in posts %}
{{ post.author }}: {{ post.title }}
{% endfor %}
{% endif %}
<form method=”post”>
<ul>
{{ form.as_ul }}
</ul>
</form>
47. Architecture
RDBMS
Storage ORM Fixtures
Model
Signals Forms Template
URL Resolver View Template Loader
Middleware Middleware
Request Response
48. Getting Started
• Pure Python - no compiled code
• No dependencies (with the exception of
the database adapter of your choice
• Three-step install
• D/L and extract tar
• Run setup.py
• Add django-admin.py to path (optional)
49. Initialize Your Project
$ django-admin.py startproject mysite
$ cd mysite
$ python manage.py startapp myapp
$ edit settings.py and set DB Info
$ python manage.py runserver
http://localhost:8000
50. Killer Features
• Legacy DB • Generic Views
• Test Framework • Template Inheritance
• Multi-DB • Tempalte Filters
• Geodjango • Humanize
• Aggregation • Runs on Jython /
IronPython
• JSON Serializer
• Stable API Promise • Google AppEngine!
• Fantastic Docs
51. Roll Your Own
• Model Managers: Custom database API for views
• Custom Template Tags: Easier to implement
functionality without mixing logic/presentation
52. Roll Your Own
• Model Managers: Custom database API for views
• Custom Template Tags: Easier to implement
functionality without mixing logic/presentation
• ORM Layer • Model Fields
• Template Engine • Form Fields
• Template Loader • URL Resolver
53. Re-usable Apps
and Pinax
• Following best practices when creating
your app allows others to plug in and use it
• Search Google Code for *django* projects
returns 1,987 results - many are apps
• James Tauber created Django Hotclub to
establish standards for app development
and integration
• Hotclub later become Pinax
57. Death-match: RoR
• Unicode
• Ruby traditionally has had issues - string is byte sequence
• Python is fully Unicode since v1.6 (circa 2000)
• i18n
• RoR: Translations are copied - no fallback?
• Django: Translations use GNU gettext-style localization -
falls back to default language
58. Death-match: RoR
• Plugins
• RoR: Rich plugin API and structure
• Django: Re-usable applications
• Automation / Build
• RoR: rake is a rich scripting language for automated tasks
• Django: manage.py can do some basic tricks - CLI
59. Death-match: RoR
• Jobs: Rails jobs out-number Django jobs 6:1
• Hype: Rails has done a fantastic job with marketing
60. Death-match: RoR
• Jobs: Rails jobs out-number Django jobs 6:1
• Hype: Rails has done a fantastic job with marketing
Survey: How many do web application development; in django; in rails
Lawrence, Kansas
Since 1850&#x2019;s
Family run newspaper - currently run by someone who is 70 years old that does not use a computer - assistant prints out e-mails
Adrian: Chicago Crime, Coined the term &#x201C;Database Journalism&#x201D;
Simon: Early work is part of many JS frameworks, Consultant on OpenID
Joined by Jacob Kaplan-Moss
First online newspaper of it&#x2019;s kind.
Had a print edition of the website
&#x201C;The CMS&#x201D;
In a landscape of confusion - invent your own
Re-framed the perception of web development;
Various layers shouldn&#x2019;t know about eachother unless absolutely necessary
Code should lack boilerplate - Java
Make tedious aspects fast - it&#x2019;s just Python
shouldn&#x2019;t do much magic
Various layers shouldn&#x2019;t know about eachother unless absolutely necessary
Code should lack boilerplate - Java
Make tedious aspects fast - it&#x2019;s just Python
shouldn&#x2019;t do much magic
Various layers shouldn&#x2019;t know about eachother unless absolutely necessary
Code should lack boilerplate - Java
Make tedious aspects fast - it&#x2019;s just Python
shouldn&#x2019;t do much magic
Various layers shouldn&#x2019;t know about eachother unless absolutely necessary
Code should lack boilerplate - Java
Make tedious aspects fast - it&#x2019;s just Python
shouldn&#x2019;t do much magic
Various layers shouldn&#x2019;t know about eachother unless absolutely necessary
Code should lack boilerplate - Java
Make tedious aspects fast - it&#x2019;s just Python
shouldn&#x2019;t do much magic
Various layers shouldn&#x2019;t know about eachother unless absolutely necessary
Code should lack boilerplate - Java
Make tedious aspects fast - it&#x2019;s just Python
shouldn&#x2019;t do much magic
manage.py syncdb
Those too hip for non-relational databases will have to wait.
Multi-DB support is coming.
Notice: more declarative programming
Notice: more declarative programming
You can generate these things dynamically
Middleware
Middleware
Middleware
Complete separation of logic and presentation - pain for things like Math or comparisons.
Templates don&#x2019;t need to be HTML - JSON, e-mail, text
Complete separation of logic and presentation - pain for things like Math or comparisons.
Templates don&#x2019;t need to be HTML - JSON, e-mail, text
Complete separation of logic and presentation - pain for things like Math or comparisons.
Templates don&#x2019;t need to be HTML - JSON, e-mail, text
Complete separation of logic and presentation - pain for things like Math or comparisons.
Templates don&#x2019;t need to be HTML - JSON, e-mail, text
PHP comparison doesn&#x2019;t count.
Really a Django Rails comparison