- Install Django
!) pip install “django>=2.1,<2.2”
!!) django-admin startproject metro
!!!) python manage.py startapp metroshop
!v) python manage.py runserver
v) python manage.py createsuperuser
- Change Metro Project setting.py add Metroshop
INSTALLED_APPS = [ 'metroshop.apps.MetroshopConfig', 'django.contrib.admin', 'django.contrib.auth', 'django.contrib.contenttypes', 'django.contrib.sessions', 'django.contrib.messages', 'django.contrib.staticfiles', ] 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', ], }, }, ] WSGI_APPLICATION = 'metro.wsgi.application' # Database # https://docs.djangoproject.com/en/2.1/ref/settings/#databases DATABASES = { 'default': { 'ENGINE': 'django.db.backends.sqlite3', 'NAME': os.path.join(BASE_DIR, 'db.sqlite3'), } } # Password validation # https://docs.djangoproject.com/en/2.1/ref/settings/#auth-password-validators AUTH_PASSWORD_VALIDATORS = [ { 'NAME': 'django.contrib.auth.password_validation.UserAttributeSimilarityValidator', }, { 'NAME': 'django.contrib.auth.password_validation.MinimumLengthValidator', }, { 'NAME': 'django.contrib.auth.password_validation.CommonPasswordValidator', }, { 'NAME': 'django.contrib.auth.password_validation.NumericPasswordValidator', }, ]
- Metro Project url.py add Metroshop app URL
from django.contrib import admin from django.urls import path, include from django.urls import path urlpatterns = [ path('admin/', admin.site.urls), path('', include('metroshop.urls')), path('metroshop/', include('metroshop.urls')), ]
- Create url.py inside meroshop folder
- Update view.py files with new view functions
from django.shortcuts import render, get_object_or_404 from django.http import HttpResponseRedirect from .models import Master_config from django.urls import reverse from django.utils import timezone from django.contrib.auth.decorators import login_required from django.http import HttpResponse import json
# Create your views here.
#@login_required def index(request): #return render(request, 'metroshop/test.html') return render(request, 'metroshop/salesbill.html') def master_config(request): m_config = Master_config.objects.filter() return render(request, 'metroshop/master_config.html', {'m_config': m_config}) def master_config_update(request): company_name = request.POST['company_name'] company_mobile = request.POST['company_mobile'] company_address = request.POST['company_address'] company_code = 1 a = Master_config(company_code=company_code,company_name=company_name,company_mobile=company_mobile,company_address=company_address) s= a.save() m_config = Master_config.objects.filter() return render(request, 'metroshop/master_config.html', {'m_config': m_config})
- define new model model.py
- Create templates/metroshop/base.html
<!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, shrink-to-fit=no"> <meta name="description" content=""> <meta name="author" content=""> <title>{% block title %}{% endblock %}</title> {% load static %} <!-- Bootstrap core CSS --> <link href="{% static '/metroshop/homepage/vendor/bootstrap/css/bootstrap.min.css' %}" rel="stylesheet"> <link href="{% static '/metroshop/css/style.css' %}" rel="stylesheet"> <!-- Custom styles for this template--> <link href="{% static '/metroshop/bootstrap/css/sb-admin.css' %}" rel="stylesheet"> <!-- Custom styles for this template --> <link rel="stylesheet" href="http://code.jquery.com/ui/1.8.18/themes/base/jquery-ui.css" type="text/css" media="all" /> <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js"></script> <script src="https://stackpath.bootstrapcdn.com/bootstrap/4.4.1/js/bootstrap.min.js" integrity="sha384-wfSDF2E50Y2D1uUdj0O3uMBJnjuUD4Ih7YwaYd1iqfktj0Uod8GCExl3Og8ifwB6" crossorigin="anonymous"></script> <link href="http://code.jquery.com/ui/1.10.2/themes/smoothness/jquery-ui.css" rel="Stylesheet"></link> <script src="https://code.jquery.com/ui/1.10.2/jquery-ui.js" ></script> </head> <body id="page-top"> <nav class="navbar navbar-expand navbar-dark bg-dark static-top"> <a class="navbar-brand mr-1" href="{% url 'index' %}">Metro ERP</a> <button class="btn btn-link btn-sm text-white order-1 order-sm-0" id="sidebarToggle" href="#"> <i class="fas fa-bars"></i> </button> <!-- Navbar --> <div class="collapse navbar-collapse" id="navbarResponsive"> <ul class="navbar-nav ml-auto"> <li class="nav-item"> {% if request.user.is_student %} <a class="nav-link text-capitalize">{{ request.user.student.name }}</a> {% elif request.user.is_teacher %} <a class="nav-link text-capitalize">{{ request.user.teacher.name }}</a> {% endif %} </li> <li class="nav-item"> <a class="nav-link" href="#" data-toggle="modal" data-target="#logoutModal">Logout</a> </li> </ul> </div> </nav> <div id="wrapper"> <!-- Sidebar --> <ul id="nav" class="sidebar navbar-nav"> <li class="nav-item"> <a class="nav-link" href="{% url 'index' %}"> <span>Home</span> </a> </li> <li><a href="#" class="sub" tabindex="1">Master</a><img src="{% static 'metroshop/images/up.gif' %}" alt="" /> <ul> <li><a href="{% url 'master_config' %}"> <span>Config Master</span> </a></li> </ul> </li> </ul> <div id="content-wrapper"> <div class="container-fluid"> <!-- Breadcrumbs--> {# <ol class="breadcrumb">#} {# <li class="breadcrumb-item">#} {# <a href="index.html">Dashboard</a>#} {# </li>#} {# <li class="breadcrumb-item active">Blank Page</li>#} {# </ol>#} <!-- Page Content --> {% block content %} {% endblock %} </div> <!-- /.container-fluid --> <!-- Sticky Footer --> {# <footer class="sticky-footer">#} {# <div class="container my-auto">#} {# <div class="copyright text-center my-auto">#} {# <span>Copyright © Your Website 2018</span>#} {# </div>#} {# </div>#} {# </footer>#} </div> <!-- /.content-wrapper --> </div> <!-- /#wrapper --> <!-- Scroll to Top Button--> <a class="scroll-to-top rounded" href="#page-top"> <i class="fas fa-angle-up"></i> </a> <!-- Logout Modal--> <div class="modal fade" id="logoutModal" tabindex="-1" role="dialog" aria-labelledby="exampleModalLabel" aria-hidden="true"> <div class="modal-dialog" role="document"> <div class="modal-content"> <div class="modal-header"> <h5 class="modal-title" id="exampleModalLabel">Ready to Leave?</h5> <button class="close" type="button" data-dismiss="modal" aria-label="Close"> <span aria-hidden="true">×</span> </button> </div> <div class="modal-body">Select "Logout" below if you are ready to end your current session.</div> <div class="modal-footer"> <button class="btn btn-secondary" type="button" data-dismiss="modal">Cancel</button> <a class="btn btn-primary" href="/accounts/logout">Logout</a> </div> </div> </div> </div> <script src="{% static '/metroshop/js/main.js' %}" type="text/javascript"> </script> {% block scripts %} {% endblock %} </body> </html>
- Create templates/metroshop/master_config.html
{% extends 'metroshop/base.html' %} {% load static %} {% block content %} <div class="card mb-3"> <div class="card-header"> <i class="fas fa-table"></i> <b>Company Config Master</b></div> <div class="card-body"> <div class="table-responsive"> <form id="master_config" name="master_config" method="post" action="{% url 'master_config_update' %}" enctype=""> {% csrf_token %} <table class="table table-bordered" id="dataTable" width="100%" cellspacing="0"> <thead> <tr> <th>Name </th> <th>Value</th> </tr> </thead> <tbody> {% for Cinfo in m_config %} {% endfor %} <tr> <td><b>company Name </b></td> <td><b></b><input type="text" name="company_name" value="{{Cinfo.company_name }}"></b></td></tr><tr> <td><b>company Mobile</b></td> <td><b><input type="text" name="company_mobile" value="{{Cinfo.company_mobile }}"></b></td></tr><tr> <td><b>company Address</b></td> <td><b></b><textarea name="company_address" >{{ Cinfo.company_address }} </textarea></b></td> </tr> <tr><td></td><td> <button class="submit" name="add_product_info" onClick="javascript:save_existing_product();">Submit</button></td></tr> </tbody> </table></form> </div> </div> </div> {% endblock %} <!-- Modal -->
- python manage.py makemigrations