In this Users app, template does not exist showing but template is already exist. I am new in Django. I have tried so many times but unable to solve this. Please help to solve this.
Users App:
urls.py:
from Users import views as user_views
from django.contrib.auth import views as auth_views
path('register/',user_views.register,name='register'),
path('login/',auth_views.LoginView.as_view(template_name='users/login.html'),name='login'),
path('logout/',auth_views.LogoutView.as_view(template_name='users/logout.html'),name='logout'),
views.py:
from django.shortcuts import redirect, render
from django.contrib import messages
from .forms import RegisterForm
# Create your views here.
app_name = 'Users'
def register(request):
if request.method == 'POST':
form = RegisterForm(request.POST)
if form.is_valid:
form.save()
username = form.cleaned_data.get('username')
messages.success(request,f'Welcome { username }, your account is created')
return redirect('login')
else:
form = RegisterForm()
return render(request,'users/register.html',{'form':form})
forms.py:
from django import forms
from django.contrib.auth.models import User
from django.contrib.auth.forms import UserCreationForm
app_name = 'Users'
class RegisterForm(UserCreationForm):
email = forms.EmailField()
class Meta:
model = User
fields = ['username','email','password1','password2']
Templates: register.html:
<form method="post">
{% csrf_token %}
{{form}}
<button type="submit">SignUp</button>
</form>
login.html:
<form method="post">
{% csrf_token %}
{{form}}
<button type="submit">Login</button>
</form>
logout.html:
<h1>You have been logged out</h1>
dashboard app: user_home.html:
<div>
{% if users.is_authenticated %}
<a href="{% url 'logout' %}" class="dashboard-nav-item"><i class="fas fa-sign-out-alt"></i> Logout </a>
{% else %}
<a href="{% url 'login' %}" class="dashboard-nav-item"><i class="fas fa-sign-out-alt"></i> Login </a>
{% endif %}
</div>
{% if messages %}
{% for message in messages %}
<div class="alert alert-{{ message.tag }}">
{{message}}
</div>
{% endfor %}
{% endif %}
settings.py:
TEMPLATES = [
{
'BACKEND': 'django.template.backends.django.DjangoTemplates',
'DIRS': [os.path.join(BASE_DIR, 'templates')],
'APP_DIRS': True,
'OPTIONS': {
'context_processors': [
'django.template.context_processors.debug',
'django.template.context_processors.request',
'django.contrib.auth.context_processors.auth',
'django.contrib.messages.context_processors.messages',
],
},
},
]
Project: mysite3 urls.py:
from django.contrib import admin
from django.urls import path
from django.urls.conf import include
from dashboard import views
from django.conf import settings
from django.conf.urls.static import static
from Users import views as user_views
from django.contrib.auth import views as auth_views
urlpatterns = [
path('',views.user_home,name='user_home'),
path('usermaster/',include(('usermaster.urls','url'), namespace='url')),
path('admin/', admin.site.urls),
path('register/',user_views.register,name='register'),
path('login/',auth_views.LoginView.as_view(template_name='users/login.html'),name='login'),
path('logout/',auth_views.LogoutView.as_view(template_name='users/logout.html'),name='logout'),
] + static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)
usermaster app: urls.py:
from usermaster import views
from django.urls import path
app_name = 'usermaster'
urlpatterns = [
path('',views.home),
path('machine_master/',views.index,name='index'),
path('addnew',views.addnew),
path('edit/<int:id>', views.edit),
path('update/<int:id>', views.update),
path('delete/<int:id>', views.destroy),
]
views.py:
from django.shortcuts import render, redirect
from usermaster.forms import MachineForm
from usermaster.models import Machine
# Create your views here.
def home(request):
return render(request,'usermaster/home.html')
def addnew(request):
if request.method == "POST":
form = MachineForm(request.POST)
if form.is_valid():
try:
form.save()
return redirect('/')
except:
pass
else:
form = MachineForm()
return render(request,'usermaster/index.html',{'form':form})
def index(request):
machines = Machine.objects.all()
return render(request,"usermaster/show.html",{'machines':machines})
def edit(request, id):
machine = Machine.objects.get(id=id)
return render(request,'usermaster/edit.html', {'machine':machine})
def update(request, id):
machine = Machine.objects.get(id=id)
form = MachineForm(request.POST, instance = machine)
if form.is_valid():
form.save()
return redirect("/")
return render(request, 'usermaster/edit.html', {'machine': machine})
def destroy(request, id):
machine = Machine.objects.get(id=id)
machine.delete()
return redirect("/")
models.py:
from django.db import models
# Create your models here.
class Machine(models.Model):
machine_name = models.CharField(max_length=100)
operation_no = models.IntegerField()
class Meta:
db_table = "machine"
forms.py:
from django import forms
from usermaster.models import Machine
class MachineForm(forms.ModelForm):
class Meta:
model = Machine
fields = ['machine_name','operation_no'] #https://docs.djangoproject.com/en/3.0/ref/forms/widgets/
widgets = { 'machine_name': forms.TextInput(attrs={ 'class': 'form-control' }),
'operation_no': forms.TextInput(attrs={ 'class': 'form-control' }),
}
templates: base.html:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>{% block title %}{% endblock %}</title>
{% load static %}
<link href="http://maxcdn.bootstrapcdn.com/bootstrap/3.3.0/css/bootstrap.min.css" rel="stylesheet" id="bootstrap-css">
<script src="http://maxcdn.bootstrapcdn.com/bootstrap/3.3.0/js/bootstrap.min.js"></script>
<script src="http://code.jquery.com/jquery-1.11.1.min.js"></script>
<script src="https://cdn.datatables.net/1.10.16/js/jquery.dataTables.min.js"></script>
<script src="https://cdn.datatables.net/1.10.16/js/dataTables.bootstrap4.min.js"></script>
</head>
<body>
<div class="container">
<div class="row">
{% block content %}{% endblock %}
</div>
</div>
<script>
$(document).ready(function() {
$('#bootstrapdatatable').DataTable({
"aLengthMenu": [[3, 5, 10, 25, -1], [3, 5, 10, 25, "All"]],
"iDisplayLength": 3
}
);
} );
</script>
</body>
</html>
edit.html:
{% extends 'usermaster/base.html' %}
{% block title %}Add New Machine Records{% endblock title %}
{% block content %}
<div class="col-md-12">
<form method="post" class="post-form" action="/update/{{machine.id}}">
{% csrf_token %}
<div class="container">
<br>
<div class="form-group row">
<label class="col-sm-1 col-form-label"></label>
<div class="col-sm-4">
<h3>Update Details</h3>
</div>
</div>
<div class="form-group row">
<label class="col-sm-2 col-form-label">Machine Id:</label>
<div class="col-sm-4">
<input type="text" class="form-control" name="id" id="id_id" required maxlength="20" value="{{ machine.id }}"/>
</div>
</div>
<div class="form-group row">
<label class="col-sm-2 col-form-label">Machine Name:</label>
<div class="col-sm-4">
<input type="text" class="form-control" name="machine_name" id="id_name" required maxlength="100" value="{{ machine.machine_name }}" />
</div>
</div>
<div class="form-group row">
<label class="col-sm-2 col-form-label">Operation number:</label>
<div class="col-sm-4">
<input type="text" class="form-control" name="operation_no" id="id_no" required maxlength="254" value="{{ machine.operation_no }}" />
</div>
</div>
<div class="form-group row">
<label class="col-sm-1 col-form-label"></label>
<div class="col-sm-4">
<button type="submit" class="btn btn-success btn-lg">Update</button>
</div>
</div>
</div>
</form>
{% endblock content %}
home.html:
{% load static %}
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<link rel="stylesheet" href="{% static 'usermaster/style.css' %}">
<title>Document</title>
</head>
<body>
<div class='dashboard'>
<div class="dashboard-nav">
<header><a href="#!" class="menu-toggle"><i class="fas fa-bars"></i></a><a href="#"
class="brand-logo"><i
class="fas fa-anchor"></i> <span>ASHOK IRON</span></a></header>
<nav class="dashboard-nav-list"><a href="#" class="dashboard-nav-item active"><i class="fas fa-home"></i>
HOME </a><a
href="#" class="dashboard-nav-item"><i class="fas fa-tachometer-alt"></i> MASTER
</a>
<a href="{% url 'usermaster:index' %}" class="dashboard-nav-item"><i class="fas fa-cogs"></i> MACHINE MASTER </a><a
href="#" class="dashboard-nav-item"><i class="fas fa-user"></i> USERS </a><a
href="#" class="dashboard-nav-item"><i class="fas fa-user"></i> VIDEOS </a>
<div class="nav-item-divider"></div>
<a
href="#" class="dashboard-nav-item"><i class="fas fa-sign-out-alt"></i> Logout </a>
</nav>
</div>
<div class='dashboard-app'>
<header class='dashboard-toolbar'><a href="#!" class="menu-toggle"><i class="fas fa-bars"></i></a></header>
<div class='dashboard-content'>
<div class='container'>
</div>
</div>
</div>
</div>
</body>
<script type="text/javascript">
const mobileScreen = window.matchMedia("(max-width: 990px )");
$(document).ready(function () {
$(".dashboard-nav-dropdown-toggle").click(function () {
$(this).closest(".dashboard-nav-dropdown")
.toggleClass("show")
.find(".dashboard-nav-dropdown")
.removeClass("show");
$(this).parent()
.siblings()
.removeClass("show");
});
$(".menu-toggle").click(function () {
if (mobileScreen.matches) {
$(".dashboard-nav").toggleClass("mobile-show");
} else {
$(".dashboard").toggleClass("dashboard-compact");
}
});
});
</script>
</html>
index.html:
{% extends 'usermaster/base.html' %}
{% block title %}Add New Machine Records{% endblock title %}
{% block content %}
<div class="col-md-12">
<form method="POST" class="post-form" action="/addnew">
{% csrf_token %}
<div class="container">
<br>
<div class="form-group row">
<label class="col-sm-1 col-form-label"></label>
<div class="col-sm-4">
<h3>Enter Machine Details</h3>
</div>
</div>
<div class="form-group row">
<label class="col-sm-2 col-form-label">Machine Name:</label>
<div class="col-sm-4">
{{ form.machine_name }}
</div>
</div>
<div class="form-group row">
<label class="col-sm-2 col-form-label">Operation Number:</label>
<div class="col-sm-4">
{{ form.operation_no }}
</div>
</div>
<div class="form-group row">
<label class="col-sm-1 col-form-label"></label>
<div class="col-sm-4">
<button type="submit" class="btn btn-primary">Submit</button>
</div>
</div>
</div>
</form>
</div>
{% endblock content %}
**show.html:**
{% extends 'usermaster/base.html' %}
{% block title %}Machine Records{% endblock title %}
{% block content %}
<div class="col-md-12">
<h4>Add New Machine Records</h4> <span><a href="/addnew" class="btn btn-primary">Add New Record</a></span>
<div class="table-responsive">
<table id="bootstrapdatatable" class="table table-striped table-bordered" width="100%">
<thead>
<th><input type="checkbox" id="checkall" /></th>
<th>ID</th>
<th>Machine Name</th>
<th>Operation Number</th>
<th>Edit</th>
<th>Delete</th>
</thead>
<tbody>
{% for machine in machines %}
<tr>
<td><input type="checkbox" class="checkthis" /></td>
<td>{{ machine.id }}</td>
<td>{{ machine.machine_name }}</td>
<td>{{ machine.operation_no }}</td>
<td><p data-placement="top" data-toggle="tooltip" title="Edit"><a href="/edit/{{ machine.id }}" class="btn btn-primary btn-xs" data-title="Edit" data-toggle="modal" data-target="#edit" ><span class="glyphicon glyphicon-pencil"></span></a></p></td>
<td><p data-placement="top" data-toggle="tooltip" title="Delete"><a href="/delete/{{ machine.id }}" class="btn btn-danger btn-xs" data-title="Delete" data-toggle="modal" data-target="#delete" ><span class="glyphicon glyphicon-trash"></span></a></p></td>
</tr>
{% endfor %}
</tbody>
</table>
</div>
</div>
{% endblock content %}
dashboard app: views.py:
from django.shortcuts import render
# Create your views here.
def user_home(request):
return render(request,'dashboard/user_home.html')
templates: user_home.html:
{% load static %}
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<link rel="stylesheet" href="{% static 'usermaster/style.css' %}">
<title>Document</title>
</head>
<body>
<div class='dashboard'>
<div class="dashboard-nav">
<header><a href="#!" class="menu-toggle"><i class="fas fa-bars"></i></a><a href="#"
class="brand-logo"><i
class="fas fa-anchor"></i> <span>ASHOK IRON</span></a></header>
<nav class="dashboard-nav-list"><a href="#" class="dashboard-nav-item active"><i class="fas fa-home"></i>
HOME </a><a
href="#" class="dashboard-nav-item"><i class="fas fa-tachometer-alt"></i> CONTROL PROCESS
</a>
<a href="#" class="dashboard-nav-item"><i class="fas fa-cogs"></i> PROCESS SHEET </a><a
href="#" class="dashboard-nav-item"><i class="fas fa-user"></i>SKILL MATRIX </a><a
href="#" class="dashboard-nav-item"><i class="fas fa-user"></i> MAINTENANCE </a><a
href="#" class="dashboard-nav-item"><i class="fas fa-user"></i> SWS </a><a
href="#" class="dashboard-nav-item"><i class="fas fa-user"></i> SAFETY </a><a
href="#" class="dashboard-nav-item"><i class="fas fa-user"></i> PFD </a>
<div class="nav-item-divider"></div>
<a
href="#" class="dashboard-nav-item"><i class="fas fa-sign-out-alt"></i> Logout </a>
</nav>
</div>
<div class='dashboard-app'>
<header class='dashboard-toolbar'><a href="#!" class="menu-toggle"><i class="fas fa-bars"></i></a>
<div>
{% if users.is_authenticated %}
<a href="{% url 'logout' %}" class="dashboard-nav-item"><i class="fas fa-sign-out-alt"></i> Logout </a>
{% else %}
<a href="{% url 'login' %}" class="dashboard-nav-item"><i class="fas fa-sign-out-alt"></i> Login </a>
{% endif %}
</div>
</header>
{% if messages %}
{% for message in messages %}
<div class="alert alert-{{ message.tag }}">
{{message}}
</div>
{% endfor %}
{% endif %}
<div class='dashboard-content'>
<div class='container'>
</div>
</div>
</div>
</div>
</body>
<script type="text/javascript">
const mobileScreen = window.matchMedia("(max-width: 990px )");
$(document).ready(function () {
$(".dashboard-nav-dropdown-toggle").click(function () {
$(this).closest(".dashboard-nav-dropdown")
.toggleClass("show")
.find(".dashboard-nav-dropdown")
.removeClass("show");
$(this).parent()
.siblings()
.removeClass("show");
});
$(".menu-toggle").click(function () {
if (mobileScreen.matches) {
$(".dashboard-nav").toggleClass("mobile-show");
} else {
$(".dashboard").toggleClass("dashboard-compact");
}
});
});
</script>
</html>