syslog.sql 데이터베이스에 넣기 환경변수 설정 시스템 변수 추가 C:\Program Files\MySQL\MySQL Server 8.4\bin cmd mysql mysql -u root -p123456 Syslog < "D:\jyb\syslog.sql" syslog.sql 오류 구문 수정 utf8mb4_uca1400_ai_ci를 utf8mb4_unicode_ci로 수정 python manage.py runserver http://127.0.0.1:8000/security ***workbench를 이용한 데이터베이스 넣기 방법 server > data import > 파일 선택 #192.168.0.77/dashboard/auth/login/?next=/admin/ 127.0.0.1:8000/admin 접속 가능 (기본) 기본 셋팅 파일 auth_user에 유저 추가 할 수 있음 혹은 cmd python manage.py createsuperuser admin t@t.com 123456 로그인 기능 만들기 urls.py app_name='security' path('',views.index,name='index') path('/',views.detail,name='detail') {% url 'security:detail' syslog.id %} 로그인, 로그아웃을 쉽게 구현하기 위한 django.contrib.auth 앱을 제공함 common을 이용할 예정 cmd django-admin startapp common => djnago 하위 디렉터리로 common 생성됨 config>settings.py # Application definition INSTALLED_APPS = [ 'security.apps.SecurityConfig', 'common.apps.CommonConfig', < - 추가 'django.contrib.admin', 'django.contrib.auth', 'django.contrib.contenttypes', 'django.contrib.sessions', 'django.contrib.messages', 'django.contrib.staticfiles', ] config>urls.py urlpatterns = [ path('admin/', admin.site.urls), path('security/', include('security.urls')), path('common/',include('common.urls')), < - 추가 ] common>urls.py 생성 from django.urls import path from django.contrib.auth import views as auth_views from . import views app_name='common' urlpatterns=[ path('login/',auth_views.LoginView.as_view(template_name'common/login.html'),name='login'), ] => 위치 특정이 가능!! base.html 수정 {% url 'common:login' %} django>templates>common생성>login.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, shrink-to-fit=no"> < meta name="description" content=""> < meta name="author" content=""> < title>산특 로그 분석기(4기)< /title> < link href="{% static 'vendor/fontawesome-free/css/all.min.css' %}" rel="stylesheet"> < link href="https://fonts.googleapis.com/css?family=Nunito:200,200i,300,300i,400,400i,600,600i,700,700i,800,800i,900,900i" rel="stylesheet"> < link href="{% static 'css/sb-admin-2.min.css' %}" rel="stylesheet"> < /head> < body id="page-top"> < div id="wrapper"> < ul class="navbar-nav bg-gradient-primary sidebar sidebar-dark accordion" id="accordionSidebar"> < a class="sidebar-brand d-flex align-items-center justify-content-center" href=""> < div class="sidebar-brand-icon rotate-n-15"> < i class="fas fa-laugh-wink">< /i> < /div> < div class="sidebar-brand-text mx-3">로그분석기< sup>1< /sup>< /div> < /a> < hr class="sidebar-divider my-0"> < li class="nav-item active"> < a class="nav-link" href="index.html"> < i class="fas fa-fw fa-tachometer-alt">< /i> < span>Dashboard< /span>< /a> < /li> < hr class="sidebar-divider"> < div class="sidebar-heading"> Interface < /div> < li class="nav-item"> < a class="nav-link collapsed" href="#" data-toggle="collapse" data-target="#collapseTwo" aria-expanded="true" aria-controls="collapseTwo"> < i class="fas fa-fw fa-cog">< /i> < span>Components< /span> < /a> < div id="collapseTwo" class="collapse" aria-labelledby="headingTwo" data-parent="#accordionSidebar"> < div class="bg-white py-2 collapse-inner rounded"> < h6 class="collapse-header">Custom Components:< /h6> < a class="collapse-item" href="">syslog< /a> < a class="collapse-item" href="">sensor< /a> < /div> < /div> < /li> < li class="nav-item"> < a class="nav-link collapsed" href="#" data-toggle="collapse" data-target="#collapseUtilities" aria-expanded="true" aria-controls="collapseUtilities"> < i class="fas fa-fw fa-wrench">< /i> < span>Utilities< /span> < /a> < div id="collapseUtilities" class="collapse" aria-labelledby="headingUtilities" data-parent="#accordionSidebar"> < div class="bg-white py-2 collapse-inner rounded"> < h6 class="collapse-header">Custom Utilities:< /h6> < a class="collapse-item" href="utilities-color.html">Colors< /a> < a class="collapse-item" href="utilities-border.html">Borders< /a> < a class="collapse-item" href="utilities-animation.html">Animations< /a> < a class="collapse-item" href="utilities-other.html">Other< /a> < /div> < /div> < /li> < hr class="sidebar-divider"> < div class="sidebar-heading"> Addons < /div> < li class="nav-item"> < a class="nav-link collapsed" href="#" data-toggle="collapse" data-target="#collapsePages" aria-expanded="true" aria-controls="collapsePages"> < i class="fas fa-fw fa-folder">< /i> < span>Pages< /span> < /a> < div id="collapsePages" class="collapse" aria-labelledby="headingPages" data-parent="#accordionSidebar"> < div class="bg-white py-2 collapse-inner rounded"> < h6 class="collapse-header">Login Screens:< /h6> < a class="collapse-item" href="{% url 'common:login' %}">Login< /a> < a class="collapse-item" href="register.html">Register< /a> < a class="collapse-item" href="forgot-password.html">Forgot Password< /a> < div class="collapse-divider">< /div> < h6 class="collapse-header">Other Pages:< /h6> < a class="collapse-item" href="404.html">404 Page< /a> < a class="collapse-item" href="blank.html">Blank Page< /a> < /div> < /div> < /li> < li class="nav-item"> < a class="nav-link" href="charts.html"> < i class="fas fa-fw fa-chart-area">< /i> < span>Charts< /span>< /a> < /li> < li class="nav-item"> < a class="nav-link" href="tables.html"> < i class="fas fa-fw fa-table">< /i> < span>Tables< /span>< /a> < /li> < hr class="sidebar-divider d-none d-md-block"> < div class="text-center d-none d-md-inline"> < button class="rounded-circle border-0" id="sidebarToggle">< /button> < /div> < div class="sidebar-card d-none d-lg-flex"> < img class="sidebar-card-illustration mb-2" src="img/undraw_rocket.svg" alt="..."> < p class="text-center mb-2">< trong>SB Admin Pro< /strong> is packed with premium features, components, and more!< /p> < a class="btn btn-success btn-sm" href="https://startbootstrap.com/theme/sb-admin-pro">Upgrade to Pro!< /a> < /div> < /ul> < div id="content-wrapper" class="d-flex flex-column"> < div id="content"> < nav class="navbar navbar-expand navbar-light bg-white topbar mb-4 static-top shadow"> < button id="sidebarToggleTop" class="btn btn-link d-md-none rounded-circle mr-3"> < i class="fa fa-bars">< /i> < /button> < form class="d-none d-sm-inline-block form-inline mr-auto ml-md-3 my-2 my-md-0 mw-100 navbar-search" id="searchForm" method="get" action=""> < div class="input-group"> < input type="text" class="form-control bg-light border-0 small" placeholder="Search for..." aria-label="Search" aria-describedby="basic-addon2"> < div class="input-group-append"> < button class="btn btn-primary" type="submit"> < i class="fas fa-search fa-sm"> < /button> < /div> < /div> < /form> < ul class="navbar-nav ml-auto"> < li class="nav-item dropdown no-arrow d-sm-none"> < a class="nav-link dropdown-toggle" href="#" id="searchDropdown" role="button" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false"> < i class="fas fa-search fa-fw">< /i> < /a> < div class="dropdown-menu dropdown-menu-right p-3 shadow animated--grow-in" aria-labelledby="searchDropdown"> < form class="form-inline mr-auto w-100 navbar-search"> < div class="input-group"> < input type="text" class="form-control bg-light border-0 small" placeholder="Search for..." aria-label="Search" aria-describedby="basic-addon2"> < div class="input-group-append"> < button class="btn btn-primary" type="button"> < i class="fas fa-search fa-sm">< /i> < /button> < /div> < /div> < /form> < /div> < li> < li class="nav-item dropdown no-arrow mx-1"> < a class="nav-link dropdown-toggle" href="#" id="alertsDropdown" role="button" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false"> < i class="fas fa-bell fa-fw">< /i> < span class="badge badge-danger badge-counter">3+< /span> < /a> < div class="dropdown-list dropdown-menu dropdown-menu-right shadow animated--grow-in" aria-labelledby="alertsDropdown"> < h6 class="dropdown-header"> Alerts Center < /h6> < a class="dropdown-item d-flex align-items-center" href="#"> < div class="mr-3"> < div class="icon-circle bg-primary"> < i class="fas fa-file-alt text-white">< /i> < /div> < /div> < div> < div class="small text-gray-500">December 12, 2019< /div> < span class="font-weight-bold">A new monthly report is ready to download!< /span> < /div> < /a> < a class="dropdown-item d-flex align-items-center" href="#"> < div class="mr-3"> < div class="icon-circle bg-success"> < i class="fas fa-donate text-white">< /i> < /div> < /div> < div> < div class="small text-gray-500">December 7, 2019< /div> $290.29 has been deposited into your account! < /div> < /a> < a class="dropdown-item d-flex align-items-center" href="#"> < div class="mr-3"> < div class="icon-circle bg-warning"> < i class="fas fa-exclamation-triangle text-white">< /i> < /div> < /div> < div> < div class="small text-gray-500">December 2, 2019< /div> Spending Alert: We've noticed unusually high spending for your account. < /div> < /a> < a class="dropdown-item text-center small text-gray-500" href="#">Show All Alerts< /a> < /div> < /li> < li class="nav-item dropdown no-arrow mx-1"> < a class="nav-link dropdown-toggle" href="#" id="messagesDropdown" role="button" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false"> < i class="fas fa-envelope fa-fw">< /i> < span class="badge badge-danger badge-counter">7< /span> < /a> < div class="dropdown-list dropdown-menu dropdown-menu-right shadow animated--grow-in" aria-labelledby="messagesDropdown"> < h6 class="dropdown-header"> Message Center < /h6> < a class="dropdown-item d-flex align-items-center" href="#"> < div class="dropdown-list-image mr-3"> < img class="rounded-circle" src="img/undraw_profile_1.svg" alt="..."> < div class="status-indicator bg-success">< /div> < /div> < div class="font-weight-bold"> < div class="text-truncate">Hi there! I am wondering if you can help me with a problem I've been having.< /div> < div class="small text-gray-500">Emily Fowler · 58m< /div> < /div> < /a> < a class="dropdown-item d-flex align-items-center" href="#"> < div class="dropdown-list-image mr-3"> < img class="rounded-circle" src="img/undraw_profile_2.svg" alt="..."> < div class="status-indicator">< /div> < /div> < div> < div class="text-truncate">I have the photos that you ordered last month, how would you like them sent to you?< /div> < div class="small text-gray-500">Jae Chun · 1d< /div> < /div> < /a> < a class="dropdown-item d-flex align-items-center" href="#"> < div class="dropdown-list-image mr-3"> < img class="rounded-circle" src="img/undraw_profile_3.svg" alt="..."> < div class="status-indicator bg-warning">< /div> < /div> < div> < div class="text-truncate">Last month's report looks great, I am very happy with the progress so far, keep up the good work!< /div> < div class="small text-gray-500">Morgan Alvarez · 2d< /div> < /div> < /a> < a class="dropdown-item d-flex align-items-center" href="#"> < div class="dropdown-list-image mr-3"> < img class="rounded-circle" src="https://source.unsplash.com/Mv9hjnEUHR4/60x60" alt="..."> < div class="status-indicator bg-success">< /div> < /div> < div> < div class="text-truncate">Am I a good boy? The reason I ask is because someone told me that people say this to all dogs, even if they aren't good...< /div> < div class="small text-gray-500">Chicken the Dog · 2w< /div> < /div> < /a> < a class="dropdown-item text-center small text-gray-500" href="#">Read More Messages< /a> < /div> < /li> < div class="topbar-divider d-none d-sm-block">< /div> < li class="nav-item dropdown no-arrow"> < a class="nav-link dropdown-toggle" href="#" id="userDropdown" role="button" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false"> < span class="mr-2 d-none d-lg-inline text-gray-600 small">Douglas McGee< /span> < img class="img-profile rounded-circle" src="img/undraw_profile.svg"> < /a> < div class="dropdown-menu dropdown-menu-right shadow animated--grow-in" aria-labelledby="userDropdown"> < a class="dropdown-item" href="#"> < i class="fas fa-user fa-sm fa-fw mr-2 text-gray-400">< /i> Profile < /a> < a class="dropdown-item" href="#"> < i class="fas fa-cogs fa-sm fa-fw mr-2 text-gray-400">< /i> Settings < /a> < a class="dropdown-item" href="#"> < i class="fas fa-list fa-sm fa-fw mr-2 text-gray-400">< /i> Activity Log < /a> {% if g.user %} < div class="dropdown-divider">< /div> < a class="dropdown-item" href="#" data-toggle="modal" data-target="#logoutModal"> < i class="fas fa-sign-out-alt fa-sm fa-fw mr-2 text-gray-400">< /i> Logout < /a> {% endif %} < /div> < /li> < /ul> < /nav> {% block content %} {% endblock%} {% include 'footer.html' %} < - 중요 footer.html 내용 채우기 < footer class="sticky-footer bg-white"> < div class="container my-auto"> < div class="copyright text-center my-auto"> < span>Copyright © Your Website 2021< /span> < /div> < /div> < /footer> < /div> < /div> < a class="scroll-to-top rounded" href="#page-top"> < i class="fas fa-angle-up">< /i> < /a> < 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="">Logout< /a> < /div> < /div> < /div> < /div> < script src="/static/vendor/jquery/jquery.min.js">< /script> < script src="/static/vendor/bootstrap/js/bootstrap.bundle.min.js">< /script> < script src="/static/vendor/jquery-easing/jquery.easing.min.js">< /script> < script src="/static/js/sb-admin-2.min.js">< /script> < script src="/static/vendor/chart.js/Chart.min.js">< /script> < script src="/static/js/demo/chart-area-demo.js">< /script> < script src="/static/js/demo/chart-pie-demo.js">< /script> < /body> < /html> django>templates>common login.html {%csrf_token%} 수정 {% extends 'base.html' %} {% block content %} < div class="container"> < div class="row justify-content-center"> < div class="col-xl-10 col-lg-12 col-md-9"> < div class="card o-hidden border-0 shadow-lg my-5"> < div class="card-body p-0"> < div class="row"> < div class="col-lg-6 d-none d-lg-block bg-login-image">< /div> < div class="col-lg-6"> < div class="p-5"> < div class="text-center"> < h1 class="h4 text-gray-900 mb-4">산특 로그 분석기< /h1> < /div> < form class="user" method="post"> {%csrf_token%} < div class="form-group"> < input type="text" class="form-control form-control-user" id="username" name="username" aria-describedby="계정입력" placeholder="계정입력"> < /div> < div class="form-group"> < input type="password" class="form-control form-control-user" id="password" name="password" placeholder="패스워드입력"> < /div> < div class="form-group"> < div class="custom-control custom-checkbox small"> < input type="checkbox" class="custom-control-input" id="customCheck"> < label class="custom-control-label" for="customCheck">Remember Me< /label> < /div> < /div> < button type="submit" class="btn btn-primary btn-user btn-block">로그인< /button> < hr> < a href="index.html" class="btn btn-google btn-user btn-block"> < i class="fab fa-google fa-fw">< /i> Login with Google < /a> < a href="index.html" class="btn btn-facebook btn-user btn-block"> < i class="fab fa-facebook-f fa-fw">< /i> Login with Facebook < /a> < /form> < hr> < div class="text-center"> < a class="small" href="">Forgot Password?< /a> < /div> < div class="text-center"> < a class="small" href="">Create an Account!< /a> < /div> < div class="text-center"> < a class="small" href="">< h3> admin | 123456 으로 접속하여 로그를 분석해주시면 됩니다.< /h3>< /a> < /div> < /div> < /div> < /div> < /div> < /div> < /div> < /div> < /div> {% endblock %} {% include 'footer.html' %} login.html 경로 설정 < form class="user" method="post" action="{% url 'common:login' %}"> common>views.py config>settings.py #https://127.0.0.1:8000/account/profile/ LOGIN_REDIRECT_URL = '/' LOGOUT_REDIRECT_URL = '/' common>urls.py app_name='common' urlpatterns=[ path('login/',auth_views.LoginView.as_view(template_name='common/login.html'),name='login'), path('logout/',auth_views.LogoutView.as_view,name='logout') ] django>templates>base.html < div class="dropdown-menu dropdown-menu-right shadow animated--grow-in" aria-labelledby="userDropdown"> {% if user.is_authenticated %} < div class="dropdown-divider">< /div> < a class="dropdown-item" href="#"> < i class="fas fa-user fa-sm fa-fw mr-2 text-gray-400">< /i> 마이페이지 < /a> < a class="dropdown-item" href="#"> < i class="fas fa-cogs fa-sm fa-fw mr-2 text-gray-400">< /i> 세팅 < /a> < a class="dropdown-item" href="#"> < i class="fas fa-list fa-sm fa-fw mr-2 text-gray-400">< /i> 로그 < /a> < a class="dropdown-item" href="#" data-toggle="modal" data-target="#logoutModal"> < i class="fas fa-sign-out-alt fa-sm fa-fw mr-2 text-gray-400">< /i> 로그아웃 < /a> {% else %} < a class="dropdown-item" href="#" data-toggle="modal" data-target="#logoutModal"> < i class="fas fa-sign-out-alt fa-sm fa-fw mr-2 text-gray-400">< /i> 로그인 < /a> < a class="dropdown-item" href="#" data-toggle="modal" data-target="#logoutModal"> < i class="fas fa-sign-out-alt fa-sm fa-fw mr-2 text-gray-400">< /i> 회원가입 < /a> {% endif %} < /div> 책 참고 프로세스를 다루는 기술 메인페이지 뜨도록 설정하기 INSTALLED_APPS = [ 'init.apps.InitConfig', cmd django-admin startapp common django-admin startapp init config>urls.py urlpatterns = [ path('', include('init.urls')), #대문작업 ] init>urls.py #127.0.0.1/security/ from django.urls import path from init import views app_name='init' urlpatterns=[ path('',views.index,name='index'), ] init>views.py 대문 만들기 from django.shortcuts import render # Create your views here. def index(request): return render(request,'init/index.html') templates>init>index.html {% extends 'base.html' %} {% block content %} < div class="container-fluid"> < div class="d-sm-flex align-items-center justify-content-between mb-4"> < h1 class="h3 mb-0 text-gray-800">Dashboard< /h1> < a href="#" class="d-none d-sm-inline-block btn btn-sm btn-primary shadow-sm">< i class="fas fa-download fa-sm text-white-50">< /i> Generate Report< /a> < /div> < div class="row"> < div class="col-xl-3 col-md-6 mb-4"> < div class="card border-left-primary shadow h-100 py-2"> < div class="card-body"> < div class="row no-gutters align-items-center"> < div class="col mr-2"> < div class="text-xs font-weight-bold text-primary text-uppercase mb-1"> Earnings (Monthly)< /div> < div class="h5 mb-0 font-weight-bold text-gray-800">$40,000< /div> < /div> < div class="col-auto"> < i class="fas fa-calendar fa-2x text-gray-300">< /i> < /div> < /div> < /div> < /div> < /div> < div class="col-xl-3 col-md-6 mb-4"> < div class="card border-left-success shadow h-100 py-2"> < div class="card-body"> < div class="row no-gutters align-items-center"> < div class="col mr-2"> < div class="text-xs font-weight-bold text-success text-uppercase mb-1"> Earnings (Annual)< /div> < div class="h5 mb-0 font-weight-bold text-gray-800">$215,000< /div> < /div> < div class="col-auto"> < i class="fas fa-dollar-sign fa-2x text-gray-300">< /i> < /div> < /div> < /div> < /div> < /div> < div class="col-xl-3 col-md-6 mb-4"> < div class="card border-left-info shadow h-100 py-2"> < div class="card-body"> < div class="row no-gutters align-items-center"> < div class="col mr-2"> < div class="text-xs font-weight-bold text-info text-uppercase mb-1">Tasks < /div> < div class="row no-gutters align-items-center"> < div class="col-auto"> < div class="h5 mb-0 mr-3 font-weight-bold text-gray-800">50%< /div> < /div> < div class="col"> < div class="progress progress-sm mr-2"> < div class="progress-bar bg-info" role="progressbar" style="width: 50%" aria-valuenow="50" aria-valuemin="0" aria-valuemax="100">< /div> < /div> < /div> < /div> < /div> < div class="col-auto"> < i class="fas fa-clipboard-list fa-2x text-gray-300">< /i> < /div> < /div> < /div> < /div> < /div> < div class="col-xl-3 col-md-6 mb-4"> < div class="card border-left-warning shadow h-100 py-2"> < div class="card-body"> < div class="row no-gutters align-items-center"> < div class="col mr-2"> < div class="text-xs font-weight-bold text-warning text-uppercase mb-1"> Pending Requests< /div> < div class="h5 mb-0 font-weight-bold text-gray-800">18< /div> < /div> < div class="col-auto"> < i class="fas fa-comments fa-2x text-gray-300">< /i> < /div> < /div> < /div> < /div> < /div> < /div> < div class="row"> < div class="col-xl-8 col-lg-7"> < div class="card shadow mb-4"> < div class="card-header py-3 d-flex flex-row align-items-center justify-content-between"> < h6 class="m-0 font-weight-bold text-primary">Earnings Overview< /h6> < div class="dropdown no-arrow"> < a class="dropdown-toggle" href="#" role="button" id="dropdownMenuLink" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false"> < i class="fas fa-ellipsis-v fa-sm fa-fw text-gray-400">< /i> < /a> < div class="dropdown-menu dropdown-menu-right shadow animated--fade-in" aria-labelledby="dropdownMenuLink"> < div class="dropdown-header">Dropdown Header:< /div> < a class="dropdown-item" href="#">Action< /a> < a class="dropdown-item" href="#">Another action< /a> < div class="dropdown-divider">< /div> < a class="dropdown-item" href="#">Something else here< /a> < /div> < /div> < /div> < div class="card-body"> < div class="chart-area"> < canvas id="myAreaChart">< /canvas> < /div> < /div> < /div> < /div> < div class="col-xl-4 col-lg-5"> < div class="card shadow mb-4"> < div class="card-header py-3 d-flex flex-row align-items-center justify-content-between"> < h6 class="m-0 font-weight-bold text-primary">Revenue Sources< /h6> < div class="dropdown no-arrow"> < a class="dropdown-toggle" href="#" role="button" id="dropdownMenuLink" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false"> < i class="fas fa-ellipsis-v fa-sm fa-fw text-gray-400">< /i> < /a> < div class="dropdown-menu dropdown-menu-right shadow animated--fade-in" aria-labelledby="dropdownMenuLink"> < div class="dropdown-header">Dropdown Header:< /div> < a class="dropdown-item" href="#">Action< /a> < a class="dropdown-item" href="#">Another action< /a> < div class="dropdown-divider">< /div> < a class="dropdown-item" href="#">Something else here< /a> < /div> < /div> < /div> < div class="card-body"> < div class="chart-pie pt-4 pb-2"> < canvas id="myPieChart">< /canvas> < /div> < div class="mt-4 text-center small"> < span class="mr-2"> < i class="fas fa-circle text-primary">< /i> Direct < /span> < span class="mr-2"> < i class="fas fa-circle text-success">< /i> Social < /span> < span class="mr-2"> < i class="fas fa-circle text-info">< /i> Referral < /span> < /div> < /div> < /div> < /div> < /div> < div class="row"> < div class="col-lg-6 mb-4"> < div class="card shadow mb-4"> < div class="card-header py-3"> < h6 class="m-0 font-weight-bold text-primary">Projects< /h6> < /div> < div class="card-body"> < h4 class="small font-weight-bold">Server Migration < span class="float-right">20%< /span>< /h4> < div class="progress mb-4"> < div class="progress-bar bg-danger" role="progressbar" style="width: 20%" aria-valuenow="20" aria-valuemin="0" aria-valuemax="100">< /div> < /div> < h4 class="small font-weight-bold">Sales Tracking < span class="float-right">40%< /span>< /h4> < div class="progress mb-4"> < div class="progress-bar bg-warning" role="progressbar" style="width: 40%" aria-valuenow="40" aria-valuemin="0" aria-valuemax="100">< /div> < /div> < h4 class="small font-weight-bold">Customer Database < span class="float-right">60%< /span>< /h4> < div class="progress mb-4"> < div class="progress-bar" role="progressbar" style="width: 60%" aria-valuenow="60" aria-valuemin="0" aria-valuemax="100">< /div> < /div> < h4 class="small font-weight-bold">Payout Details < span class="float-right">80%< /span>< /h4> < div class="progress mb-4"> < div class="progress-bar bg-info" role="progressbar" style="width: 80%" aria-valuenow="80" aria-valuemin="0" aria-valuemax="100">< /div> < /div> < h4 class="small font-weight-bold">Account Setup < span class="float-right">Complete!< /span>< /h4> < div class="progress"> < div class="progress-bar bg-success" role="progressbar" style="width: 100%" aria-valuenow="100" aria-valuemin="0" aria-valuemax="100">< /div> < /div> < /div> < /div> < div class="row"> < div class="col-lg-6 mb-4"> < div class="card bg-primary text-white shadow"> < div class="card-body"> Primary < div class="text-white-50 small">#4e73df< /div> < /div> < /div> < /div> < div class="col-lg-6 mb-4"> < div class="card bg-success text-white shadow"> < div class="card-body"> Success < div class="text-white-50 small">#1cc88a< /div> < /div> < /div> < /div> < div class="col-lg-6 mb-4"> < div class="card bg-info text-white shadow"> < div class="card-body"> Info < div class="text-white-50 small">#36b9cc< /div> < /div> < /div> < /div> < div class="col-lg-6 mb-4"> < div class="card bg-warning text-white shadow"> < div class="card-body"> Warning < div class="text-white-50 small">#f6c23e< /div> < /div> < /div> < /div> < div class="col-lg-6 mb-4"> < div class="card bg-danger text-white shadow"> < div class="card-body"> Danger < div class="text-white-50 small">#e74a3b< /div> < /div> < /div> < /div> < div class="col-lg-6 mb-4"> < div class="card bg-secondary text-white shadow"> < div class="card-body"> Secondary < div class="text-white-50 small">#858796< /div> < /div> < /div> < /div> < div class="col-lg-6 mb-4"> < div class="card bg-light text-black shadow"> < div class="card-body"> Light < div class="text-black-50 small">#f8f9fc< /div> < /div> < /div> < /div> < div class="col-lg-6 mb-4"> < div class="card bg-dark text-white shadow"> < div class="card-body"> Dark < div class="text-white-50 small">#5a5c69< /div> < /div> < /div> < /div> < /div> < /div> < div class="col-lg-6 mb-4"> < div class="card shadow mb-4"> < div class="card-header py-3"> < h6 class="m-0 font-weight-bold text-primary">Illustrations< /h6> < /div> < div class="card-body"> < div class="text-center"> < img class="img-fluid px-3 px-sm-4 mt-3 mb-4" style="width: 25rem;" src="img/undraw_posting_photo.svg" alt="..."> < /div> < p>Add some quality, svg illustrations to your project courtesy of < a target="_blank" rel="nofollow" href="https://undraw.co/">unDraw< /a>, a constantly updated collection of beautiful svg images that you can use completely free and without attribution!< /p> < a target="_blank" rel="nofollow" href="https://undraw.co/">Browse Illustrations on unDraw →< /a> < /div> < /div> < div class="card shadow mb-4"> < div class="card-header py-3"> < h6 class="m-0 font-weight-bold text-primary">Development Approach< /h6> < /div> < div class="card-body"> < p>SB Admin 2 makes extensive use of Bootstrap 4 utility classes in order to reduce CSS bloat and poor page performance. Custom CSS classes are used to create custom components and custom utility classes.< /p> < p class="mb-0">Before working with this theme, you should become familiar with the Bootstrap framework, especially the utility classes.< /p> < /div> < /div> < /div> < /div> < /div> < /div> {% endblock %} templates>base.html < a class="sidebar-brand d-flex align-items-center justify-content-center" href="/"> ... < li class="nav-item"> < a class="nav-link collapsed" href="#" data-toggle="collapse" data-target="#collapseTwo" aria-expanded="true" aria-controls="collapseTwo"> < i class="fas fa-fw fa-cog">< /i> < span>Components< /span> < /a> < div id="collapseTwo" class="collapse" aria-labelledby="headingTwo" data-parent="#accordionSidebar"> < div class="bg-white py-2 collapse-inner rounded"> < h6 class="collapse-header">Custom Components:< /h6> < a class="collapse-item" href="{% url 'security:index' %}">syslog< /a> ... < li class="nav-item"> < a class="nav-link collapsed" href="#" data-toggle="collapse" data-target="#collapsePages" aria-expanded="true" aria-controls="collapsePages"> < i class="fas fa-fw fa-folder">< /i> < span>Pages< /span> < /a> < div id="collapsePages" class="collapse" aria-labelledby="headingPages" data-parent="#accordionSidebar"> < div class="bg-white py-2 collapse-inner rounded"> < h6 class="collapse-header">Login Screens:< /h6> < a class="collapse-item" href="{% url 'common:login' %}">Login< /a> < a class="collapse-item" href="{% url 'common:signup' %}">Signup< /a> common>urls.py urlpatterns=[ path('login/',auth_views.LoginView.as_view(template_name='common/login.html'),name='login'), path('logout/',auth_views.LogoutView.as_view,name='logout'), path('signup/',views.signup,name='signup'), ] common>views.py from django.shortcuts import render # Create your views here. def signup(request): pass security>urls.py #127.0.0.1/security/ from django.urls import path from . import views app_name='security' urlpatterns = [ path('', views.index, name='index'), ] 에러페이지를 만들어서 오류 상세히 진단 templates>form_errors.html {% if form.errors %} {% for field in form %} {% for error in field.errors %} < div class="alert alert-danger"> < strong>{{field.label}}< /strong> {{error}} < /div> {% endfor %} {%endfor%} {%endif%} common>login.html 추가 < form class="user" method="post" action="{% url 'common:login' %}"> {% csrf_token %} {% include "form_errors.html" %} 로그인을 한 뒤에만 syslog 페이지를 볼 수 있도록 하고싶으므로 로그인 하지 않은 상태에서 syslog페이지를 누르면 로그인 페이지로 이동 security>views.py from django.contrib.auth.decorators import login_required @login_required(login_url='common:login') def index(request):