Skip to content
Snippets Groups Projects
Week 12: Setting up a simple Django application 3.25 KiB
Newer Older
Chinthak Murali's avatar
Chinthak Murali committed



Week 12: Setting up a simple Django application





Inside a centos VM I cloned from LDAP server (link cloned)



conda create --name django python=3.9
conda activate django


conda install django

django-admin --version

django-admin startproject helloworld
cd helloworld
python manage.py startapp greetings


In greetings/views.py


from django.http import HttpResponse

def hello(request):
    return HttpResponse("Hello, World")


In helloworld/urls.py:


from django.contrib import admin
from django.urls import path
from greetings import views

urlpatterns = [
    path('admin/', admin.site.urls),
    path('', views.hello, name='hello'),
]





Open settings.py

Add the IP Address to ALLOWED_HOSTS

Locate the ALLOWED_HOSTS setting and update it to include your VM's IP address.


ALLOWED_HOSTS = ['127.0.0.1', 'localhost', '0.0.0.0', '192.168.56.101']


python manage.py runserver 0.0.0.0:8001

Open your web browser on your host machine and navigate to http://<VM_IP>:8001/

VM_IP = 192.168.56.101

a page opens up with message 'Hello, World'






Set a login page for your Django application



add 'greetings' in helloworld/settings.py:


INSTALLED_APPS = [
    ...
    'greetings',
    'django.contrib.auth',  # Make sure auth is included
    'django.contrib.contenttypes',  # Make sure contenttypes is included
    ...
]


Create login template


mkdir -p greetings/templates/registration and create login.html here:

<!-- greetings/templates/registration/login.html -->

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Login</title>
</head>
<body>
    <h2>Login</h2>
    <form method="post">
        {% csrf_token %}
        {{ form.as_p }}
        <button type="submit">Login</button>
    </form>
</body>
</html>


in helloworld/urls.py write:

# helloworld/urls.py

from django.contrib import admin
from django.urls import path, include

urlpatterns = [
    path('admin/', admin.site.urls),
    path('accounts/', include('django.contrib.auth.urls')),  # Include built-in auth URLs
    path('', include('greetings.urls')),  # Include your app URLs
]


create a file greetings/urls.py and write:

# greetings/urls.py

from django.urls import path
from . import views

urlpatterns = [
    path('', views.home, name='home'),  # Home view
]




in greetings/views.py wtite

# greetings/views.py

from django.shortcuts import render
from django.contrib.auth.decorators import login_required

@login_required
def home(request):
    return render(request, 'home.html')



create home.html in greetings/templates as:

<!-- greetings/templates/home.html -->

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Home</title>
</head>
<body>
    <h2>Welcome, {{ user.username }}!</h2>
    <p>You are logged in.</p>
    <a href="{% url 'logout' %}">Logout</a>
</body>
</html>



make sure helloworld/settings.py has:

# helloworld/settings.py

LOGIN_REDIRECT_URL = '/'
LOGOUT_REDIRECT_URL = '/accounts/login/'
LOGIN_URL = '/accounts/login/'

# Ensure you have a working database and run migrations


python manage.py migrate


python manage.py createsuperuser

(add username, password etc. cmurali, timeMACHINE)

python manage.py runserver 0.0.0.0:8001


go to http://192.168.56.101:8001/accounts/login/ and make sure login is working and see Hello World upon login.