본문 바로가기

회고록(TIL&WIL)

TIL 2022.05.27 Django 공부 - admin, MVT패턴, URL연결, return메서드

admin 페이지 - django에서 기본적으로 구축해놓은 기능

http://127.0.0.1:8000/admin 으로 기본적으로 접속가능하다.

django에서 제공하는 super user를 만들어야 admin 페이지에 접근 할 수 있습니다!

 

 >> python manage.py createsuperuser

 

터미널 창에서 위 명령어 입력하여 admin 로그인을 위한 계정 생성 가능

 

admin 화면에 생성한 모델을 등록해서 admin 화면에서 한번에 관리할 수 있다.

해당 APP의 admin.py 파일에 아래 코드를 작성하면 모델을 admin에 등록할 수 있다.

from django.contrib import admin
from .models import UserModel

# Register your models here.
admin.site.register(UserModel) # 이 코드가 나의 UserModel을 Admin에 추가 해 줍니다

MVT패턴

  • M (Model) = models.py
    • 데이터베이스의 모델 (ORM)
    • 저장되고 사용되는 데이터의 형태
  • T (Template) = templates폴더 내의 html
    • 사용자에게 보여지는 부분
    • 화면
  • V (View) = views.py
    • 실질적으로 프로그램이 동작하는 부분
    • url을 요청하고 응답하는 그 사이에 일어나는 '서비스'들이 존재하는 곳

URL 연결=화면띄우기 (URL > VIEW > TEMPLATE)

중요한점 ! 새로 생성 된 앱의 urls.py와 기본으로 생성 되어있는 urls.py와의 연결을 잘 해주자!

1. url을 연결 할 user앱에 urls.py를 생성 해 주세요 

2. 생성한 urls.py 파일을 프로젝트와 연결시켜주기 - 프로젝트제목과 같은 APP에 urls.py 폴더에 코드 추가

# mySpartaSns/urls.py
from django.contrib import admin
from django.urls import path, include

urlpatterns = [
    path('admin/', admin.site.urls),
    path('', include('user.urls'))
]

3. import include 추가, path('', include('user.urs')) 작성하여 user APP의 urls 폴더와 연결

4. user APP의 urls.py에 연결할 때 view.py에 있는 함수들과 연결되기 때문에 우선 view.py에 연결될 함수 작성

from django.shortcuts import render

# Create your views here.
def sign_up_view(request):
    return render(request, 'user/signup.html')

def sign_in_view(request):
    return render(request, 'user/signin.html')

5. user APP의 urls.py에 경로 작성해서 View.py와 연결

from django.urls import path
from . import views

urlpatterns = [
    path('sign-up/', views.sign_up_view, name='sign-up'),
    path('sign-in/', views.sign_in_view, name='sign-in'),
]

return 시 사용되는 메서드 (import 필수!)

1.render - render(request, 'filepath', {'key': value})  - 결과값과 함께 html 띄워줄때

from django.shortcuts import render

def sign_up_view(request):
	...
    return render(request, 'user/signup.html', {'error': '패스워드를 확인 해주세요'})

2. redirect - redirect('url')  - 다시 url GET요청줘서 이동시킬 때

from django.shortcuts import redirect

def sign_in(request):
	...
  return redirect('/sign-in')

3. HttpResponse - HttpResponse(인자) - ajax 통신 후 response에 줄 내용으로 인자를 줄 수 있음

from django.http import HttpResponse

def sign_in_view(request):
      ...
   return HttpResponse("로그인 성공!")
$.ajax({
    type: 'POST',
    url: '/user/login',
    ...
    success: function (response) {
        alert(response);
>> 로그인 성공! 출력됨

4. JsonResponse(json데이터) - ajax통신 후 response에 json데이터 형태로 줄 수 있음

from django.http import JsonResponse

def example(request):
    ...
    return JsonResponse({'foo': 'bar'})