0% found this document useful (0 votes)
32 views

Django Level One

Uploaded by

ahmad masadeh
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PPTX, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
32 views

Django Level One

Uploaded by

ahmad masadeh
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PPTX, PDF, TXT or read online on Scribd
You are on page 1/ 81

Django - Level One

Getting Started with Django!


Django

● We’ve finally reached the moment we’ve been


waiting for - Django!
● Before we dive into the technical details of Django,
let’s learn a little more about it and it's interesting
background!
Django

● Django is a free and open source web framework.


● It is used by many sites, including Pinterest, PBS,
Instagram, BitBucket, Washington Times, Mozilla,
and more!
Django

● Django was created in 2003 when the web


developers at the Lawrence Journal-World
newspaper started using Python for their
development.
● The fact that is originated at a newspaper is
important!
Django

● Because the original developers were surrounded


by writers, good written documentation is a key
part of Django!
● This means you have excellent references to check
on the official Django docs!
Django

● Django has its own excellent basic tutorial where


you are walked through creating a basic polling
web app.
● The reason it is a poll also extends back to its
newspaper roots!
Django

● When encountering Django tutorials you will often


read that you should create a virtual environment
or an “venv”
● Let’s talk about what this is and how to use it!
Django

● A virtual environment allows you to have a virtual


installation of Python and packages on your
computer.
● So why would you ever want or need this?
Django

● Packages change and get updated often!


● There are changes that break backwards
compatibility.
● So what do you do if you want to test out new
features but not break your web app?
Django

● You create a virtual environment that contains the


newer version of the package.
● Luckily, Anaconda makes this really easy for us!
● A virtual environment handler is included!
Django

● To use a virtual environment with conda we use


these commands:
○ conda create --name myEnv django
● Here we created an environment called “myEnv”
with the latest version of Django.
Django

● You can then activate the environment:


○ activate myEnv
● Now, anything installed with pip or conda when this
environment is activated, will only be installed for
this environment.
Django

● You can then deactivate the environment


○ deactivate myEnv
● Its encouraged to use virtual environments for your
projects to keep them self-contained and not run into
issues when packages update!
Django
Creating our first django project!
Django

● You can install Django with


○ conda install django
● Or for normal python distributions:
○ pip install django
Django

● When you install Django, it actually also installed a


command line tool called:
○ django-admin
● Let’s create our first project. Type:
○ django-admin startproject first_project
Django

● You will then get something that looks like this:


Django

● Let’s explain what is going on here!


Django

● __init__.py
○ This is a blank Python script
that due to its special name
let’s Python know that this
directory can be treated as a
package
Django

● settings.py
○ This is where you will store
all your project settings
Django

● urls.py
○ This is a Python script that
will store all the URL
patterns for your project.
Basically the different pages
of your web application.
Django

● wsgi.py
○ This is a Python script that
acts as the Web Server
Gateway Interface. It will
later on help us deploy our
web app to production
Django

● manage.py
○ This is a Python script that
we will use a lot. It will be
associates with many
commands as we build our
web app!
Django

● Let’s use manage.py now:


○ python manage.py runserver
● You will see a bunch of stuff but at the bottom you
will see something like:
Django version 1.10.5, using settings
'first_project.settings'
Starting development server at
http://127.0.0.1:8000/
Django

● Copy and paste that url into your browser


○ http://127.0.0.1:8000/
● You should now see your very first web page being
locally hosted on your computer.
● Congratulations!
Django

● You should have also noticed a warning about


migrations.
● This has to do with databases and how to connect
them to Django
● What is a Migration?
Django

● A migration allows you to move databases from one


design to another, this is also reversible.
● So you can “migrate” your database
● We will touch back on this later, for now you can
ignore this warning.
Django

● That was the basics of getting started with Django!


● Up next we will continue by creating a very simple
Hello World Django Application!
Django
Creating our first django application!
Django

● So far we have been able to use runserver to test our


installation of Django.
● Now let’s move on to creating our first Django
Application.
● We’ll learn about views and how to use them.
Django

● Let’s get some terminology straight:


○ A Django Project is a collection of applications
and configurations that when combined together
will make up the full web application (your
complete website running with Django)
Django

● Let’s get some terminology straight:


○ A Django Application is created to perform a
particular functionality for your entire web
application. For example you could have a
registration app, a polling app, comments app,
etc.
Django

● These Django Apps can then be plugged into other


Django Projects, so you can reuse them! (Or use
other people’s apps)
● Let’s create a simple application with:
○ python manage.py startapp first_app
Django

● Let’s quickly discuss all of these files!


Django

● __init__.py
○ This is a blank Python script
that due to its special name
let’s Python know that this
directory can be treated as a
package
Django

● admin.py
○ You can register your models
here which Django will then
use them with Django’s
admin interface.
Django

● apps.py
○ Here you can place
application specific
configurations
Django

● models.py
○ Here you store the
application’s data models
Django

● tests.py
○ Here you can store test
functions to test your code
Django

● views.py
○ This is where you have
functions that handle requests
and return responses
Django

● Migrations folder
○ This directory stores database
specific information as it
relates to the models
Django

● Now let’s learn the process of creating a view and


mapping it to a URL!
Django - Challenge!
Time to put your skills to the test!
Django

● We’ve learned enough now that before we continue


to learn about URL mappings, we should challenge
you to make sure you can test your new skills!
Django

● Complete the following tasks:


○ Create a New Django Project: “ProTwo”
○ Create a New Django App: “AppTwo”
○ Create an Index View that returns:
■ <em>My Second App </em>
○ Link this view to the urls.py file
Django

● In the next lecture we will go through the steps of


this challenge task!
● Best of luck, you already have all the knowledge
needed to complete this!
Django - Challenge
Solutions
Let’s go through the solutions together!
Django - Mapping URLS
Let’s quickly cover some more URL mappings!
Django

● As we continue on through the course we are going


to be dealing with mapping URLs quite a bit!
● There are several ways of doing this, let’s briefly
touch upon another way!
Django

● We previously showed a very direct mapping from


the views.py to the urls.py
● Now we want to show the ability of using the
include() function from django.conf.urls
Django

● The include() function allows us to look for a match


with regular expressions and link back to our
application’s own urls.py file.
● We will have to manually add in this urls.py file
Django

● So we would add the following to the project’s


urls.py
○ from django.conf.urls import include
○ urlpatterns = [ ...
url(r’^first_app/’,include(‘first_app.urls’)), ..
.]
Django

● This would allow us to look for any url that has the
pattern:
○ www.domainname.com/first_app/…
● If we match that pattern, the include() function
basically tells Django to go look at the urls.py file
inside of first_app folder
Django

● This might seem like a lot of work for a simple


mapping, but later on we will want to try to keep our
project’s urls.py clean and modular
● So we set the reference to the app, instead of listing
them all in the main urls
Django

● Let’s quickly walk through an example of all of this


to show how it works!
● Quick note: We’ve covered everything in Part 1 of
Django’s Official Tutorial, so after this lecture you
may want to go visit Part One and browse through
it!
Django - Templates
Let’s learn how to use Templates!
Django

● Templates are a key part to understanding how


Django really works and interacts with your
website.
● Later on we will learn about how to connect
templates with models so you can display data
created dynamically.
Django

● For now, let’s focus on the basics of templates and


template tags.
● The template will contain the static parts of an html
page (parts that are always the same)
Django

● Then there are template tags, which have their own


special syntax.
● This syntax allows you to inject dynamic content
that your Django App’s views will produce,
effecting the final HTML
Django

● To get started with templates you first need to create


a templates directory and then a subdirectory for
each specific app’s templates.
● It goes inside of your top level directory:
○ first_project/templates/first_app
Django

● The next step is to let Django know of the templates


by editing the DIR key inside of the TEMPLATES
dictionary in the settings.py file.
● However, there is an issue we have to deal with
before we do this!
Django

● We want our Django Project to be easily


transferrable from one computer to another, but the
DIR key will require a “hard-coded” path
● How do we resolve this?
Django

● We can use Python’s os module to dynamically


generate the correct file path strings, regardless of
computer!
● Import os and try out the following:
○ print(__file__)
○ print(os.path.dirname(__file__)
Django

● We will use this os module to feed the path to the


DIR key inside of the TEMPLATES dictionary.
● Once we’ve done that we can create an html file
called index.html inside of the templates/first_app
directory
Django

● Inside this HTML file we will insert template tags


(a.k.a Django Template Variable).
● These template variables will allow us to inject
content into the HTML directly from Django!
Django

● This is now starting to reveal the power of why we


would use a Web Framework
● Django will be able to inject content into the HTML
● Which means we can later on use Python code to
inject content from a database!
Django

● In order to achieve this, we will use the render()


function and place it into our original index()
function inside of our views.py file.
● Let’s now code through everything we just
discussed!
Django Templates
Challenge !
Test your knowledge of Templates!
Django

● Templates is a big leap forward for us, so it is a


good time to quickly practice using them!
● We will use your older ProTwo project (recreate it if
you no longer have it)
● Complete the following tasks...
Django Templates
Challenge - Solutions
Test your knowledge of Templates!
Django

● Create a templates directory and connect it to the


settings.py file
● Create a new view called help and use url mapping
to render it for any page with the extension /help
● Add template tags to return “Help Page”
Django

● Best of luck and in the next lecture we will code


through the solution!
Django - Static Files
Learn how to insert static media files.
Django

● So far we’ve used templates to insert simple text.


● But we don’t always just want text, what about other
types of media, for example, returning a User’s
Photo?
● Let’s discuss static media files!
Django

● To do this, we will create a new directory inside of


the project called static ( just like we did for
templates)
● Then we will add this directory path to the project’s
settings.py file
● We will also add a STATIC_URL variable
Django

● Once we’ve done that we need a place to store our


static image files
● We create a directory inside of static called images
● Place a favorite .jpg file inside this images directory
(or just download one)
Django

● To test that this all worked you can go to:


○ 127.0.0.1:8000/static/images/pict.jpg
● That will confirm that the paths are set up and
connected properly.
● But what we really want to do is set up a template
tag for this!
Django

● To do this inside an html file, we add in a few


specific tags, at the top:
○ {% load staticfiles %}
● Then we want to insert the image with an HTML
<img src= > style tag using:
○ <img src={%static “images/pic.jpg” %} />
Django

● Notice how this template tag is a little different in


that it uses
○ {% %}
● instead of
○ {{ }}
Django

● We will discuss and show these differences more


clearly in future lectures, but for now consider {{ }}
as being used for simple text injection, and we can
use {% %} for more complex injections and logic
Django

● Now let’s code through an example of serving up a


static image!
● Afterwards we can dive into models and databases!

You might also like