티스토리 뷰
INTRO
Python 3.10.0
Django 3.2.8
1. base_log.html을 이용한 persona-erp.html, register.html, password.html 단순화
2. temlates/base/base.html을 이용한 home/notice 통합
persona 외 mysite/bstest 정리 및 templates/base 통합
- 현 tree 구조 : 빨강 삭제, 파랑 생성, 노랑 수정/이동
.
├── config
│ ├── __init__.py
│ ├── asgi.py
│ ├── settings.py
│ ├── urls.py
│ └── wsgi.py
├── db.sqlite3
├── home
│ ├── __init__.py
│ ├── admin.py
│ ├── apps.py
│ ├── forms.py
│ ├── migrations
│ ├── models.py
│ ├── templates
│ │ ├── mysite
│ │ │ └── welcome_home.html
│ │ └── persona
│ │ ├── base
│ │ │ ├── base.html
│ │ │ ├── footer.html
│ │ │ ├── sidebar.html
│ │ │ └── topbar.html
│ │ ├── errorforms
│ │ │ ├── 401.html
│ │ │ ├── 404.html
│ │ │ └── 500.html
│ │ ├── index.html
│ │ └── notices
│ │ ├── notice.html
│ │ ├── notice_edit.html
│ │ ├── notice_new.html
│ │ └── notice_view.html
│ ├── tests.py
│ ├── urls.py
│ └── views.py
├── manage.py
├── secret.json
├── staticfiles
├── statics
│ ├── assets
│ ├── css
│ ├── img
│ └── js
└── templates
├── base
│ ├── base.html
│ ├── footer.html
│ ├── sidebar.html
│ └── topbar.html
├── bstest
├── mysite
└── persona
- templates 통일화 : 삭제, 생성, 이동 후 tree
.
├── config
│ ├── __init__.py
│ ├── asgi.py
│ ├── settings.py
│ ├── urls.py
│ └── wsgi.py
├── db.sqlite3
├── home
│ ├── __init__.py
│ ├── admin.py
│ ├── apps.py
│ ├── forms.py
│ ├── migrations
│ ├── models.py
│ ├── templates
│ │ └── home
│ │ ├── index.html
│ │ └── notices
│ │ ├── notice.html
│ │ ├── notice_edit.html
│ │ ├── notice_new.html
│ │ └── notice_view.html
│ ├── tests.py
│ ├── urls.py
│ └── views.py
├── manage.py
├── secret.json
├── staticfiles
├── statics
│ ├── assets
│ ├── css
│ ├── img
│ └── js
└──templates
├── base
│ ├── base.html
│ ├── base_log.html
│ ├── footer.html
│ ├── sidebar.html
│ └── topbar.html
├── errorforms
│ ├── 401.html
│ ├── 404.html
│ └── 500.html
├── password.html
├── persona-erp.html
└── register.html
config/settings.py TEMPLATES_DIR 일원화
"""
Django settings for config project.
Generated by 'django-admin startproject' using Django 3.2.9.
For more information on this file, see
https://docs.djangoproject.com/en/3.2/topics/settings/
For the full list of settings and their values, see
https://docs.djangoproject.com/en/3.2/ref/settings/
"""
from pathlib import Path
import os, json
from pytz import common_timezones
from django.core.exceptions import ImproperlyConfigured
# Build paths inside the project like this: BASE_DIR / 'subdir'.
BASE_DIR = Path(__file__).resolve().parent.parent
TEMPLATES_DIR = os.path.join(BASE_DIR, 'templates')
....
TEMPLATES = [
{
'BACKEND': 'django.template.backends.django.DjangoTemplates',
'DIRS': [
TEMPLATES_DIR,
],
'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',
],
},
},
]
config/urls.py 수정
from django.contrib import admin
from django.urls import path, include
from home import urls, views
from django.contrib.auth import views as auth_views
from django.views.generic import TemplateView
urlpatterns = [
path('admin/', admin.site.urls),
path('', TemplateView.as_view(template_name='persona-erp.html'), name='persona-erp'),
path('logout/', auth_views.LogoutView.as_view(), name='logout'),
path('register/', TemplateView.as_view(template_name='register.html'), name='register'),
path('password/', TemplateView.as_view(template_name='password.html'), name='password'),
path('home/', include("home.urls")),
]
base_log.html 이용하여 persona-erp.html, register.html, password.html 단순화
- templates/base/base_log.html
{% load static %}
<!DOCTYPE html>
<html>
<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 %}{{ section.title }}{% endblock %}</title>
<link href="https://cdn.jsdelivr.net/npm/simple-datatables@latest/dist/style.css" rel="stylesheet" />
<link href="{% static 'css/styles.css' %}" rel="stylesheet" />
<script src="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.15.3/js/all.min.js" crossorigin="anonymous"></script>
</head>
<body class="bg-primary">
<div id="layoutAuthentication">
<div id="layoutAuthentication_content">
<!-- Topbar -->
<nav class="sb-topnav navbar navbar-expand navbar-dark bg-dark">
<!-- Navbar Brand-->
<a class="navbar-brand ps-3" href="{% url 'persona-erp' %}">PERSONA-ERP</a>
<!-- Sidebar Toggle-->
<button class="btn btn-link btn-sm order-1 order-lg-0 me-4 me-lg-0" id="sidebarToggle" href="#!"><i class="fas fa-bars"></i></button>
<!-- Navbar-->
</nav>
<!-- Topbar End-->
<!-- Sidebar/Main+footer -->
<div id="layoutSidenav">
<!-- 1. Sidebar -->
<div id="layoutSidenav_nav">
<nav class="sb-sidenav accordion sb-sidenav-dark" id="sidenavAccordion">
<div class="sb-sidenav-menu">
<nav class="sb-sidenav-menu-nested nav accordion" id="sidenavAccordionPages">
<a class="nav-link collapsed" href="#" data-bs-toggle="collapse" data-bs-target="#pagesCollapseAuth" aria-expanded="false" aria-controls="pagesCollapseAuth">
Authentication
<div class="sb-sidenav-collapse-arrow"><i class="fas fa-angle-down"></i></div>
</a>
<div class="collapse" id="pagesCollapseAuth" aria-labelledby="headingOne" data-bs-parent="#sidenavAccordionPages">
<nav class="sb-sidenav-menu-nested nav">
<!-- <a class="nav-link" href="persona-erp.html">Login</a> -->
<a class="nav-link" href="{% url 'register' %}">Register</a>
<a class="nav-link" href="{% url 'password' %}">Forgot Password</a>
</nav>
</div>
</nav>
</div>
<div class="sb-sidenav-footer">
<div class="small">Logged in as:</div>
<p>{{ user.username }}</p>
</div>
</nav>
</div>
<!-- 1. Sidebar End-->
<!-- 2. Main_Contents -->
<div id="layoutSidenav_content">
<main>
{% block main %}
{% endblock main %}
</main>
<!-- 2_1. Footer -->
<footer class="py-4 bg-light mt-auto">
<div class="container-fluid px-4">
<div class="d-flex align-items-center justify-content-between small">
<div class="text-muted">Copyright © PERSONA all rights reserved. | SUPPORT @ <a href="https://startbootstrap.com">startbootstrap</a> | THEME : <a href="https://startbootstrap.com/template/sb-admin">SB Admin</a></div>
<div>
<a href="#">Privacy Policy</a>
·
<a href="#">Terms & Conditions</a>
</div>
</div>
</div>
</footer>
<!-- 2_1. Footer End-->
</div>
<!-- 2. Main_Contents End-->
</div>
<!-- Sidebar/Main+footer End-->
</div>
</div>
<script src="https://cdn.jsdelivr.net/npm/bootstrap@5.1.3/dist/js/bootstrap.bundle.min.js" crossorigin="anonymous"></script>
<script src="{% static 'js/scripts.js' %}"></script>
{% block js %}
{% endblock js %}
</body>
</html>
- templates/persona-erp.html
{% extends 'base/base_log.html' %}
{% block main %}
<div class="container">
<div class="row justify-content-center">
<div class="col-lg-5">
<div class="card shadow-lg border-0 rounded-lg mt-5">
<div class="card-header"><h3 class="text-center font-weight-light my-4">Login</h3></div>
<div class="card-body">
<form>
<div class="form-floating mb-3">
<input class="form-control" id="inputEmail" type="email" placeholder="name@example.com" />
<label for="inputEmail">Email address</label>
</div>
<div class="form-floating mb-3">
<input class="form-control" id="inputPassword" type="password" placeholder="Password" />
<label for="inputPassword">Password</label>
</div>
<div class="form-check mb-3">
<input class="form-check-input" id="inputRememberPassword" type="checkbox" value="" />
<label class="form-check-label" for="inputRememberPassword">Remember Password</label>
</div>
<div class="d-flex align-items-center justify-content-between mt-4 mb-0">
<a class="small" href="{% url 'password' %}">Forgot Password?</a>
<a class="btn btn-primary" href="{% url 'home:index' %}">Login</a>
<!-- <a class="btn btn-primary" type="submit">Login</a> -->
</div>
</form>
</div>
<div class="card-footer text-center py-3">
<div class="small"><a href="{% url 'register' %}">Need an account? Sign up!</a></div>
</div>
</div>
</div>
</div>
</div>
{% endblock main %}
- templates/register.html
{% extends 'base/base_log.html' %}
{% block main %}
<div class="container">
<div class="row justify-content-center">
<div class="col-lg-7">
<div class="card shadow-lg border-0 rounded-lg mt-5">
<div class="card-header"><h3 class="text-center font-weight-light my-4">Create Account</h3></div>
<div class="card-body">
<form>
<div class="row mb-3">
<div class="col-md-6">
<div class="form-floating mb-3 mb-md-0">
<input class="form-control" id="inputFirstName" type="text" placeholder="Enter your first name" />
<label for="inputFirstName">First name</label>
</div>
</div>
<div class="col-md-6">
<div class="form-floating">
<input class="form-control" id="inputLastName" type="text" placeholder="Enter your last name" />
<label for="inputLastName">Last name</label>
</div>
</div>
</div>
<div class="form-floating mb-3">
<input class="form-control" id="inputEmail" type="email" placeholder="name@example.com" />
<label for="inputEmail">Email address</label>
</div>
<div class="row mb-3">
<div class="col-md-6">
<div class="form-floating mb-3 mb-md-0">
<input class="form-control" id="inputPassword" type="password" placeholder="Create a password" />
<label for="inputPassword">Password</label>
</div>
</div>
<div class="col-md-6">
<div class="form-floating mb-3 mb-md-0">
<input class="form-control" id="inputPasswordConfirm" type="password" placeholder="Confirm password" />
<label for="inputPasswordConfirm">Confirm Password</label>
</div>
</div>
</div>
<div class="mt-4 mb-0">
<div class="d-grid"><a class="btn btn-primary btn-block" href="{% url 'register' %}">Create Account</a></div>
</div>
</form>
</div>
<div class="card-footer text-center py-3">
<div class="small"><a href="{% url 'persona-erp' %}">Have an account? Go to login</a></div>
</div>
</div>
</div>
</div>
</div>
{% endblock main %}
- templates/password.html
{% extends 'base/base_log.html' %}
{% block main %}
<div class="container">
<div class="row justify-content-center">
<div class="col-lg-5">
<div class="card shadow-lg border-0 rounded-lg mt-5">
<div class="card-header"><h3 class="text-center font-weight-light my-4">Password Recovery</h3></div>
<div class="card-body">
<div class="small mb-3 text-muted">Enter your email address and we will send you a link to reset your password.</div>
<form>
<div class="form-floating mb-3">
<input class="form-control" id="inputEmail" type="email" placeholder="name@example.com" />
<label for="inputEmail">Email address</label>
</div>
<div class="d-flex align-items-center justify-content-between mt-4 mb-0">
<a class="small" href="{% url 'home:index' %}">Return to login</a>
<a class="btn btn-primary" href="{% url 'password' %}">Reset Password</a>
</div>
</form>
</div>
<div class="card-footer text-center py-3">
<div class="small"><a href="{% url 'register' %}">Need an account? Sign up!</a></div>
</div>
</div>
</div>
</div>
</div>
{% endblock main %}
'python > django_ERP2' 카테고리의 다른 글
(macOS)[python] django-erp : accounts app 생성과 login, logout, signup 구현하기 (0) | 2021.12.08 |
---|---|
(macOS)[python] django-erp : templates 구조 정리 - 2 (0) | 2021.12.08 |
(macOS)[python] django-erp : Model - Notice 생성/수정/삭제 (0) | 2021.12.07 |
(macOS)[python] django-erp : (3) persona-erp bootstrap customize (0) | 2021.11.15 |
(macOS)[python] django-erp : templates 분리 (2) bstest layout 분리 (0) | 2021.11.15 |
- Total
- Today
- Yesterday
- Python
- sublime text
- CSV
- pyserial
- Regression
- 확진
- Pandas
- 자가격리
- DS18B20
- 라즈베리파이
- vscode
- DAQ
- 코로나
- ERP
- SSH
- r
- arduino
- git
- raspberrypi
- Django
- github
- template
- Templates
- Model
- 코로나19
- analysis
- server
- Raspberry Pi
- MacOS
- COVID-19
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 | 29 |
30 | 31 |