#20250313

장고 (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)