Templates in Django - Python, How to use master page in Django using Templates, How to fix TemplateDoesNotExist at error in Django. How to run Django applications in Windows. How a Django view works.
4. Django
• It is a web framework
• It follow MVC architecture (MTV architecture)
– Model View Controller
• Model = Database
• View = Presentation
• Controller = Business Logic
– Model Template View
• Model = Database
• Template = Presentation
• View = Business Logic
5. • In the case of Django View contains the business logic.
It is different from normal MVC nomenclature.
• For a normal HTML web page to output, there must be
four files.
– Models.py = It contains the database objects. It helps you
to write python codes rather than SQL statements
– View.py = It contains the logic
– Ulrs.py = It contains the configuration /urls in the website
– Html (template) = The presentation or what the user sees
6. • a view is just a Python function that takes
an HttpRequest as its first parameter and
returns an instance of HttpResponse. In order
for a Python function to be a Django view, it
must do these two things. (There are
exceptions, but we’ll get to those later.)
7. • For creating a new project in Django
– django-admin.py startproject mysite
8. • Create a view.py (It is for easy to understand
and naming convention. You can give any
name to the py files)
9. Stupid error that you can make!
• Always tick file extension when you are
programming in Windows . I created a file
name views.py and in fact it was views.py.py. I
kept getting the error
– “ImportError at /hello/
– No module named views
10. • Even though the error is caused while using
Django (Python framework), it has nothing to
do with Django. You must try importing the
views.py directly in the python command line.
11. • If you get the above error come and check
whether .pyc file is created for the view. If not
there is something wrong with the file and
how it was defined.
12. “Welcome to baabtra program”
• Here we are going to teach you how to print
“Welcome to baabtra – Now the time is
*System Time+” using Django framework
(Python)
• There will be 2 files required for this program
• views.py: This file can be present in Main
folder of the project or in an app.
14. views.py
• import datetime
• from django.http import HttpResponse
• def hellobaabtra(request):
#This is created for a simple Hello message
return HttpResponse("Hello Baabtra")
• def welcomecurrent_datetime(request):
now = datetime.datetime.now()
html = "<html><body>Welcome to baabttra: It is
now %s.</body></html>" % now
return HttpResponse(html)
19. How the code works?
• Django starts with Settings.py file.
• When you run python manage.py runserver, the
script looks for a file called settings.py in the
inner baabtrastudentwebsite directory. This file
contains all sorts of configuration for this
particular Django project, all in uppercase:
TEMPLATE_DIRS, DATABASES, etc. The most
important setting is called ROOT_URLCONF.
ROOT_URLCONF tells Django which Python
module should be used as the URLconf for this
Web site.
21. • The autogenerated settings.py contains
a ROOT_URLCONF setting that points to the
autogenerated urls.py. Below is a screenshot
from settings.py
• This corresponds the file
/baabtrastudentwebsite/url
22. • When a request comes in for a particular URL –
say, a request for /hello/ – Django loads the
URLconf pointed to by
the ROOT_URLCONF setting. Then it checks each
of the URLpatterns in that URLconf, in
order, comparing the requested URL with the
patterns one at a time, until it finds one that
matches. When it finds one that matches, it calls
the view function associated with that
pattern, passing it an HttpRequest object as the
first parameter.
23. • In summary:
– A request comes in to /hello/.
– Django determines the root URLconf by looking at
the ROOT_URLCONF setting.
– Django looks at all of the URLpatterns in the URLconf
for the first one that matches /hello/.
– If it finds a match, it calls the associated view function.
– The view function returns an HttpResponse.
– Django converts the HttpResponse to the proper HTTP
response, which results in a Web page.
24. Templates
• Why templates?
– For separating the python code and HTML
• Advantages
– Any design change will not affect the python code
– Separation of duties
25. Example for a template
<html>
<head><title>Ordering notice</title></head>
<body>
<h1>Baabtra Notification</h1>
<p>Dear {{ candidate_name }},</p>
<p>Congragulations! You have been selected by {{ company }}.</p>
<p>Your subjects are</p>
<ul>
{% for subject in subjectlist %}
<li>{{ subject }}</li>
{% endfor %}
</ul>
{% if distinction %}
<p>Great! You have more than 80% marks.</p>
{% else %}
<p>You have cleared all the tests.</p>
{% endif %}
<p>Sincerely,<br />{{ mentor }}</p>
</body>
</html>
26. Explanation
• Candidate_name is a variable. Any text
surrounded by a pair of braces
(e.g., {{ candidate_name }}) is a variable
• {% if distinction %} is template tag.
27. How to use template in Django?
Type python manage.py shell
Template system rely on settings.py. Django looks for an environment variable
called DJANGO_SETTINGS_MODULE, which should be set to the import path
of your settings.py. For example, DJANGO_SETTINGS_MODULE might be set
to ‘baabtrastudentwebsite.settings', assuming baabtrastudentwebsite is on
your Python path. While running python, it is better to use python manage.py
shell as it will reduce errors.
You can find the value in manage.py file of the project.
28. >>> from django import template
>>> t = template.Template('My training centre is {{
name }}.')
>>> c = template.Context({'name': ‘baabtra'})
>>> print t.render(c)
My training centre is baabtra.
>>> c = template.Context(,'name': ‘baabte'})
>>> print t.render(c)
'My training centre is baabte .
29. • The second line creates a template object. If
there is an error TemplateSyntaxError is
thrown.
• Block tag and template tag are synonymous.
30. Rendering a template
• Values are passed to template by giving it a context. A
context is simply a set of template variable names and
their associated values. A template uses this to
populate its variables and evaluate its tags.
• Context class is present in django.template
• Render function returns a unicode object and not a
python string.
• We can also pass string as a template argument to the
constructure. For ex. Str_temp ‘My training centre is {{
name --.‘
• t = template.Template(Str_temp)
31.
32. • You can render the same template with
multiple contexts.
33. Using Templates in views
• Django provides template-loading API
• In the settings.py file, the template directory
name is mentioned under TEMPLATE_DIRS
tag.
34. views.py
• def templatecalling(request):
now = datetime.datetime.now()
t = get_template('welcome.html')
html = t.render(Context({'current_date': now}))
return HttpResponse(html)
39. • Now if you want to give the relative path, you
can follow the below steps:
– Settings.py
– Please add
• import os.path
• PROJECT_PATH =
os.path.realpath(os.path.dirname(__file__))
42. • If we are not giving the absolute path for the
template folder, you need to put the template
under the project folder or app with the same
name as that of project. Our program runs
under the folder with the same name as that
of the project.
43. Refresh the page
• Please note that in this case we have not given
the absolute path.
44. Include Template Tag
• {% include template_name %}
• For example, we want to include a home
template in more than one file. In our
previous example, we want to create a master
page which will be used in two pages.
45. Problem statement
• Create a master page template which will be
included in two templates. The home template
will have
– This is from master page
• The first and second template will have “This is
first template” and “This is second template”
• ViewName:
v_baabtrainctemplate1, v_baabtrainctemplate2
• Url Name: url_ baabtrainctemplate1, url_
baabtrainctemplate2
51. • Code under firstbaabtra.html
<html>
<body>
{% include "masterpage.html" %}
<br>
This is the first template. <br>
Welcome to baabtra: It is now {{ now }}.
</body></html>
52. • HTML inside masterpage.html
There is no html tags used here.
This is from master page
54. • The author takes corporate trainings in
Android, Java, JQuery, JavaScript and Python. In case
if your organization needs training, please connect
through www.massbaab.com/baabtra.
• Baabtra provides both online and offline trainings for
candidates who want to learn latest programming
technologies , frameworks like
codeigniter, django, android, iphone app
development
• Baabtra also provides basic training in
SQL, .NET, PHP, Java and Python who wants to start
their career in IT.