Django
Django
py manage.py runserver
Project URLS:
urlpatterns = [
path('', include('members.urls')),
path('admin/', admin.site.urls),
]
Super User:
py manage.py createsuperuser
py manage.py runserver
127.0.0.1:8000/admin/
This is done in a file called admin.py, and is located in your app's folder, which
in our case is the members folder.
batch/admin.py:
Set Display:
-----------
class Member(models.Model):
firstname = models.CharField(max_length=255)
lastname = models.CharField(max_length=255)
phone = models.IntegerField(null=True)
joined_date = models.DateField(null=True)
def __str__(self):
return f"{self.firstname} {self.lastname}"
Admin.py
class MemberAdmin(admin.ModelAdmin):
list_display = ("firstname", "lastname", "joined_date",)
admin.site.register(Member, MemberAdmin)
-----------------------------------------------------------------------------------
---------------------------------------------------
Django Variables:
----------------
templates/template.html:
views.py
-------
def testing(request):
template = loader.get_template('template.html')
context = {
'firstname': 'Gowtham',
}
return HttpResponse(template.render(context, request))
You can also create variables directly in the template, by using the {% with %}
template tag.
{% with firstname="Tobias" %}
<h1>Hello {{ firstname }}, how are you?</h1>
{% endwith %}
def testing(request):
mymembers = Member.objects.all().values()
template = loader.get_template('template.html')
context = {
'mymembers': mymembers,
}
return HttpResponse(template.render(context, request))
template.html
-------------
<ul>
{% for x in mymembers %}
<li>{{ x.firstname }}</li>
{% endfor %}
</ul>
Template Tags
------------
In Django templates, you can perform programming logic like executing if statements
and for loops.
{% if greeting == 1 %}
<h1>Hello</h1>
{% else %}
<h1>Bye</h1>
{% endif %}
{% if greeting == 1 %}
<h1>Hello</h1>
{% elif greeting == 2 %}
<h1>Welcome</h1>
{% endif %}
{% if greeting == 2 %}
<h1>Hello</h1>
{% endif %}
{% if greeting != 1 %}
<h1>Hello</h1>
{% endif %}
{% if greeting < 3 %}
<h1>Hello</h1>
{% endif %}
{% if greeting <= 3 %}
<h1>Hello</h1>
{% endif %}
{% if greeting == 1 or greeting == 5 %}
<h1>Hello</h1>
{% endif %}
{% if 'Banana' in fruits %}
<h1>Hello</h1>
{% else %}
<h1>Goodbye</h1>
{% endif %}
{% if 'Banana' not in fruits %}
<h1>Hello</h1>
{% else %}
<h1>Goodbye</h1>
{% endif %}
def testing(request):
template = loader.get_template('template.html')
context = {
'x': ['Apple', 'Banana', 'Cherry'],
'y': ['Apple', 'Banana', 'Cherry'],
}
return HttpResponse(template.render(context, request))
<ul>
{% for x in mymembers %}
<li>{{ x.firstname }}</li>
{% endfor %}
</ul>
Django QuerySet
---------------
QuerySets makes it easier to get the data you actually need, by allowing you to
filter and order the data at an early stage.
def testing(request):
mydata = Member.objects.all()
template = loader.get_template('template.html')
context = {
'mymembers': mydata,
}
return HttpResponse(template.render(context, request))
<table border='1'>
<tr>
<th>ID</th>
<th>Firstname</th>
<th>Lastname</th>
</tr>
{% for x in mymembers %}
<tr>
<td>{{ x.id }}</td>
<td>{{ x.firstname }}</td>
<td>{{ x.lastname }}</td>
</tr>
{% endfor %}
</table>
The values_list() method allows you to return only the columns that you specify.
def testing(request):
mydata = Member.objects.values_list('firstname')
template = loader.get_template('template.html')
context = {
'mymembers': mydata,
}
return HttpResponse(template.render(context, request))
<!DOCTYPE html>
<html>
<body>
{{ mymembers }}
<table border='1'>
{% for x in mymembers %}
<tr>
<td>{{ x }}</td>
</tr>
{% endfor %}
</table>
</body>
</html>
def testing(request):
mydata = Member.objects.filter(firstname='Emil').values()
template = loader.get_template('template.html')
context = {
'mymembers': mydata,
}
return HttpResponse(template.render(context, request))
<!DOCTYPE html>
<html>
<body>
<table border='1'>
<tr>
<th>ID</th>
<th>Firstname</th>
<th>Lastname</th>
</tr>
{% for x in mymembers %}
<tr>
<td>{{ x.id }}</td>
<td>{{ x.firstname }}</td>
<td>{{ x.lastname }}</td>
</tr>
{% endfor %}
</table>
</body>
</html>
def testing(request):
mydata = Member.objects.filter(firstname='Emil').values()
template = loader.get_template('template.html')
context = {
'mymembers': mydata,
}
return HttpResponse(template.render(context, request))
<!DOCTYPE html>
<html>
<body>
{{ mymembers }}
<table border='1'>
<tr>
<th>ID</th>
<th>Firstname</th>
<th>Lastname</th>
</tr>
{% for x in mymembers %}
<tr>
<td>{{ x.id }}</td>
<td>{{ x.firstname }}</td>
<td>{{ x.lastname }}</td>
</tr>
{% endfor %}
</table>
</body>
</html>
mydata = Member.objects.filter(firstname='Baskar').values() |
Member.objects.filter(firstname='Bharath').values()
mydata = Member.objects.filter(firstname__startswith='L').values()
mydata = Member.objects.all().order_by('firstname').values()
mydata = Member.objects.all().order_by('-firstname').values()
-----------------------------------------------------------------------------------
-------
When building web applications, you probably want to add some static files like
images or css files.
body {
background-color: lightblue;
font-family: verdana;
}
{% load static %}
And:
{% load static %}
<!DOCTYPE html>
<html>
<link rel="stylesheet" href="{% static 'myfirst.css' %}">
<body>
{% for x in fruits %}
<h1>{{ x }}</h1>
{% endfor %}
</body>
</html>
DEBUG = False
ALLOWED_HOSTS = ['*']
WhiteNoise
Django does not have a built-in solution for serving static files, at least not in
production when DEBUG has to be False.
Middleware:
'whitenoise.middleware.WhiteNoiseMiddleware',
STATIC_URL = 'static/'
py manage.py collectstatic
py manage.py runserver