Post on 06-May-2015
PYLADIES PRESENTS:
Build your own blog with Django!
1
{{ GOALS }}
Have funLearn about web development
Create something
2
{{ LAYOUT }}
Overview of Django FrameworkCode together
3
{{ DJANGO }}
Django is to Pythonas
Rails is to Ruby
4
{{ LET’S GET STARTED }}
Quick note:do NOT copy text
on these slides into your text editor. Write it out yourself.
5
{{ LET’S GET STARTED }}Activate your virtualenv$ workon MyBlog
orC:\User\Desktop\Projects\MyBlog\Tools\Scripts
\activate6
{{ LET’S GET STARTED }}Start a Python shell
And type ‘import django’
(MyBlog)$ python
>>> import django7
{{ LET’S GET STARTED }}Back in the terminal (NOT in the
python shell!, type "one line!:
(MyBlog)$ django-admin.py startproject ZagrebWorkshop
8
{{ RUNSERVER }}On the terminal/console:
(MyBlog)$ python manage.py runserver
http://localhost:8000
In a web browser, go to:
BAM it works.9
{{ SETTINGS.PY }}Open up settings.pyDATABASES = { 'default': { 'ENGINE': 'django.db.backends.sqlite3', 'NAME': 'MyBlog.db', 'USER': '', 'PASSWORD': '', 'HOST': '', 'PORT': '', }}
10
{{ SYNCDB }}Back on the terminal/console:
(MyBlog)$ python manage.py syncdb
and follow prompts.BAM your DB is set up.
11
{{ STARTAPP }}Back on the terminal/console:
(MyBlog)$ python manage.py startapp MyBlog
BAM more files!
(MyBlog)$ cd MyBlog
(MyBlog)$ ls OR (MyBlog)C:\User\Desktop\> dir
12
{{ MODELS.PY }}Open up models.py
from django.db import models
class Post(models.Model): title = models.CharField(max_length=60) body = models.TextField() created = models.DateTimeField(auto_now_add=True)
def __unicode__(self): return self.title
13
{{ SETTINGS.PY }}Return to settings.py file.
INSTALLED_APPS = ( 'django.contrib.auth', 'django.contrib.contenttypes', 'django.contrib.sessions', 'django.contrib.sites', 'django.contrib.messages', 'django.contrib.staticfiles', # Uncomment the next line to enable the admin: # 'django.contrib.admin', # Uncomment the next line to enable admin documentation: # 'django.contrib.admindocs', 'MyBlog',)
14
{{ SYNCDB }}Back on the terminal/console:
(MyBlog)$ python manage.py syncdb
again. Then do:(MyBlog)$ python manage.py shell
Let’s play around a little.15
{{ SETTINGS.PY }}Return to settings.py file.
INSTALLED_APPS = ( 'django.contrib.auth', 'django.contrib.contenttypes', 'django.contrib.sessions', 'django.contrib.sites', 'django.contrib.messages', 'django.contrib.staticfiles', # Uncomment the next line to enable the admin: 'django.contrib.admin', # Uncomment the next line to enable admin documentation: # 'django.contrib.admindocs', 'MyBlog',)
16
{{ ADMIN }}Something is missing.
Create MyBlog/admin.pyfrom django.contrib import admin
from MyBlog.models import Post
class PostAdmin(admin.ModelAdmin): search_fields = ['title']
admin.site.register(Post, PostAdmin)
17
{{ ADMIN }}Back on the terminal/console:(MyBlog)$ python manage.py runserver
In a web browser, go to:http://localhost:8000/admin
woah.18
{{ URLS }}Open urls.py
And edit for the following:from django.conf.urls import patterns, include, urlfrom django.contrib import admin
admin.autodiscover()
urlpatterns = patterns('', url(r'^admin/', include(admin.site.urls)),)
19
{{ ADMIN }}Back on the terminal/console:(MyBlog)$ python manage.py runserver
In a web browser, go to:http://localhost:8000/admin
woah.20
{{ URLS }}Now go to:
http://localhost:8000
Missing something...
21
{{ URLS }}Reopen urls.py
And edit for the following:from django.conf.urls import patterns, include, urlfrom django.contrib import admin
admin.autodiscover()
urlpatterns = patterns('', url(r'^$', ‘MyBlog.views.home’, name='home'), url(r'^(\d+)/$', ‘MyBlog.views.post’, name='post'), url(r'^admin/', include(admin.site.urls)),)
22
{{ ADMIN }}Back on the terminal/console:(MyBlog)$ python manage.py runserver
In a web browser, go to:http://localhost:8000/
Hrmph. No Views.23
{{ VIEWS }}Open views.py...
And let’s write two views together.
24
{{ TEMPLATES }}Download http://l.ynn.me/SVaCxp &
unzip/open the file.
Move the “templates” folder to under the main
“ZagrebWorkshop” directory.25
{{ TEMPLATES }}
Move the “static” folder to under the second
“ZagrebWorkshop” directory.
26
{{ TEMPLATES }}
Optional: open “ZagrebWorkshop/templates/blog/
base.html” and edit for Author, Email, and/or Site Title
27
{{ TEMPLATES }}Optional: If you created a Disqus
account, copy and paste your JavaScript code in:
“ZagrebWorkshop/templates/blog/post.html”
28
!"" ZagrebWorkshop/ #"" MyBlog/ $ #"" __init__.py $ #"" admin.py $ #"" models.py $ #"" tests.py $ #"" views.py #"" ZagrebWorkshop/ $ #"" __init__.py $ #"" settings.py | !"" static/ $ #"" urls.py $ #"" wsgi.py #"" manage.py #"" MyBlog.db !"" templates/ !"" blog/
{{ DIRECTORIES }}
29
{{ SETTINGS.PY }}Reopen settings.py
and add these few bits.Refer to notes for specific line
numbers.https://gist.github.com/4144268
30
{{ COLLECTSTATIC }}
(MyBlog)$ python manage.py collectstatic
31
{{ TA-DA }}
One last time(MyBlog)$ python manage.py runserver
You should see your blog!
32
{{ SETUP HEROKU }}
Make a venv snapshot
(MyBlog)$ pip freeze > requirements.txt
33
{{ SETUP HEROKU }}
Make a new file called “Procfile”and save it in your main
“ZagrebWorkshop” directory web: python manage.py runserver 0.0.0.0:$PORT
--noreload
34
{{ SETUP HEROKU }}
$ git config --global user.name “Your Name”$ git config --global user.email “Your Email”
$ git init$ git add .
$ git commit -m “My Django Application”
35
{{ SETUP HEROKU }}(MyBlog) $ heroku login(MyBlog) $ heroku create
Follow the steps for ‘heroku create’. Take note of the URL that Heroku
gives you on your terminal(MyBlog) $ git push heroku master
36
{{ DEPLOY }}
It may take a couple of minutes. Then, navigate to that URL
from previous step
(MyBlog) $ git push heroku master
37