장고 (Django) mysite.cmd 수정 @echo off cd C:/projects/django C:/venvs/mysite/scripts/activate > mystie > pip install django > django-admin startproject config . 장고 실행 > python manage.py runserver > django-admin startapp security projects\django\config\settings.py security/views.py from django.shortcuts import render def index(request): return HttpResponse("장고입니다") projects\django\security\urls.py #127.0.0.1/security/ from django.urls import path from . import views urlpatterns = [ path('', views.index), ] django\config\settings.py 수정 57라인 수정 : 'DIRS': [BASE_DIR / 'templates'], 디렉터리 생성 C:\projects\django\templates\security 밑에 index.html 생성 로컬 컴퓨터에 mysql 설치 후 db 연결 테스트 https://dev.mysql.com/downloads/mysql 8.4.4 LTS 버전 설치 syslog 데이터베이스 생성 [django\models.py] from django.db import models class SystemEvents(models.Model): # 테이블 이름 정의 class Meta: db_table = 'SystemEvents' # 필드 정의 ID = models.AutoField(primary_key=True) # 자동 증가하는 ID 필드 CustomerID = models.BigIntegerField(null=True, blank=True) # BigInteger 타입 ReceivedAt = models.DateTimeField(null=True, blank=True) # DateTime 타입 DeviceReportedTime = models.DateTimeField(null=True, blank=True) # DateTime 타입 Facility = models.SmallIntegerField(null=True, blank=True) # SmallInteger 타입 Priority = models.SmallIntegerField(null=True, blank=True) # SmallInteger 타입 FromHost = models.CharField(max_length=60, null=True, blank=True) # CharField (60자까지) Message = models.TextField() # TextField는 null=False로 설정되어 있음 NTSeverity = models.IntegerField(null=True, blank=True) # Integer 타입 Importance = models.IntegerField(null=True, blank=True) # Integer 타입 EventSource = models.CharField(max_length=60, null=True, blank=True) # CharField (60자까지) EventUser = models.CharField(max_length=60, null=True, blank=True) # CharField (60자까지) EventCategory = models.IntegerField(null=True, blank=True) # Integer 타입 EventID = models.IntegerField(null=True, blank=True) # Integer 타입 EventBinaryData = models.TextField(null=True, blank=True) # TextField (null=True로 설정) MaxAvailable = models.IntegerField(null=True, blank=True) # Integer 타입 CurrUsage = models.IntegerField(null=True, blank=True) # Integer 타입 MinUsage = models.IntegerField(null=True, blank=True) # Integer 타입 MaxUsage = models.IntegerField(null=True, blank=True) # Integer 타입 InfoUnitID = models.IntegerField(null=True, blank=True) # Integer 타입 SysLogTag = models.CharField(max_length=60, null=True, blank=True) # CharField (60자까지) EventLogType = models.CharField(max_length=60, null=True, blank=True) # CharField (60자까지) GenericFileName = models.CharField(max_length=60, null=True, blank=True) # CharField (60자까지) SystemID = models.IntegerField(null=True, blank=True) # Integer 타입 > pip install mysqlclient > pip install pymysql [settings.py] import pymysql 34라인 INSTALLED_APPS 변수에 'security.apps.SecurityConfig', 추가. DATABASES = { 'default': { 'ENGINE': 'django.db.backends.mysql', 'NAME': 'Syslog', 'USER': 'rsyslog', 'PASSWORD': '123456', 'HOST': 'localhost', 'PORT': '3306', } } migration > python manage.py makemigrations > python manage.py migrate db 데이터 가져오기 [views.py] from django.shortcuts import render from django.http import HttpResponse from .models import SystemEvents def index(request): syslog=SystemEvents.objects.order_by('-ID') context={'syslog':syslog} return render(request, 'security/index.html', context)