728x90
반응형

Web/Django 12

장고(Django) 회원가입 페이지 구현하기, django.contrib.auth 활용

1. 회원가입 페이지로 연결되는 링크 추가 이전 게시물에서 만든 login.html 템플릿에 아래 코드를 추가하여 회원가입 페이지로 연결되는 링크를 추가한다. 로그인 또는 계정을 만드세요. 2. URL 매핑 login.html 템플릿에 {% url 'common:signup' %} 태그를 추가했으므로 이것에 대응되는 URL 매핑을 urls.py에 추가해주어야한다. 아래와 같이 추가해주면 회원가입 링크 클릭 시 views.signup 함수가 실행된다. from django.urls import path from django.contrib.auth import views as auth_views from . import views app_name = 'common' urlpatterns = [ path('l..

Web/Django 2021.08.07

장고(Django) 로그인, 로그아웃 페이지 구현하기, django.contrib.auth 활용

이번에는 로그인, 로그아웃 기능을 구현해볼 것이다. Django에서 로그인, 로그아웃을 도와주는 앱은 django.contrib.auth이다. 이 앱은 프로젝트 생성 시 settings.py에 자동으로 추가된다. INSTALLED_APPS = [ (... 생략 ...) 'django.contrib.auth', (... 생략 ...) ] 1. common 앱 생성 먼저 로그인, 로그아웃 기능을 구현할 앱을 추가해줄 것이다. 현재까지 게시판 기능을 구현한 'notes' 앱만 구현했으므로, 이제는 '공통 기능을 가진 앱'을 추가하여 구현할 것이다. 터미널에 아래와 같이 입력해서 common 앱을 생성하자. > django-admin startapp common 그리고 settings.py에 'common.ap..

Web/Django 2021.08.04

장고(Django) 템플릿 필터 생성 및 적용하기

1. 템플릿 필터 템플릿 필터란 템플릿 태그에서 | 문자 뒤에 사용하는 필터를 말한다. 예를 들어 아래 default_if_none은 템플릿 필터이다. {{ form.subject.value|default_if_none:'' }} 2. 게시물 번호 이전 게시물에서 구현했던 '페이징' 기능에는 아직 문제점이 하나 있다. 모든 페이지에서 게시물 번호가 항상 1부터 시작된다는 점이다. 이제 템플릿 필터를 활용하여 이 문제를 해결해볼 것이다. 먼저, 최근 게시물이 먼저 보여야하므로 게시물의 번호를 역순으로 정렬해야하고, 페이지별 게시물의 번호를 역순으로 정렬하려면 아래와 같은 공식을 적용해야한다. 번호 = 전체건수 - 시작인덱스 - 현재인덱스 + 1 시작 인덱스: 페이지 당 시작되는 게시물의 시작 번호 현재 인..

Web/Django 2021.08.04

장고(Django) Paginator을 활용하여 페이징 기능 구현하기

1. 대량 테스트 데이터 만들기 - 장고셸 사용 페이징(Paging) 실습을 위해 먼저 대량의 테이터를 만들 것이다. python manage.py shell 명령어로 장고셸을 실행해고 다음과 같이 한줄씩 입력한다. 이제 장고 셸을 종료하고 로컬 서버를 실행해보면 아래와 300개 이상의 데이터가 한 페이지에 보여진다. 따라서 이러한 문제를 해결하기 위해 페이징(paging) 처리가 반드시 필요하다. 2. views.py - Paginator 클래스 활용 장고에서 페이징을 처리하기 위해선 Paginator 클래스를 사용해야한다. 아래와 같이 Paginator 클래스를 사용하여 index 함수에 페이징 기능을 적용한다. from django.shortcuts import render, get_object_o..

Web/Django 2021.08.04

장고(Django) GET과 POST를 활용하여 폼(Form) 작업하기

1. 질문 등록하기 버튼 생성 폼 실습을 하기 위해 먼저 질문 등록하는 부분을 구현해주어야한다. 먼저 question_list.html에 "질문 등록하기"버튼을 만들어준다. 이 버튼을 클릭할 경우 question_create 별칭에 해당하는 URL이 호출되므로 해당 URL 별칭을 가진 URL 매핑을 추가해야한다. 질문 등록하기 2. URL 매핑 추가 /notes/urls.py에 다음과 같이 url 매핑을 추가한다. 해당 url이 요청되었을 경우 views.question_create 함수가 호출되므로 이제 views.py에서 question_create 함수를 작성해주어야한다. urlpatterns = [ (... 생략 ...) path('question/create/', views.question_cr..

Web/Django 2021.08.03

Django(장고) static 디렉터리와 템플릿 상속 및 include 태그 사용

Django의 static 1. static 디렉터리 추가 static 디렉터리는 스타일시트 파일을 저장하는 곳이다. templates 디렉터리와 마찬가지로 static 디렉터리도 settings.py 파일에 등록해주어야한다. STATIC_URL = '/static/' STATICFILES_DIRS = [ BASE_DIR / 'static', ] 2. 스타일시트 작성 및 템플릿에 스타일 적용 static 디렉터리에 style.css 파일을 다음과 같이 간단하게 작성해보았다. textarea의 넓이를 100%로, "답변 등록" 버튼 상단에 100 픽셀의 여백을 설정했다. textarea { width:100%; } input[type=submit] { margin-top:10px; } 이제 question..

Web/Django 2021.08.03

Django(장고)에서 POST 방식의 데이터 저장

1. 템플릿에 답변 등록 폼 추가 앞서 작성해두었던 question_detail.html을 다음과 같이 수정해서 답변의 내용을 입력할 수 있는 텍스트창, 저장할 수 있는 "답변등록" 버튼을 추가해준다. 답변을 저장하기 위한 URL은 form 태그의 action 속성에 {% url 'pybo:answer_create' question.id %}로 지정해주었다. form 태그 바로 밑에 {% csrf_token %}은 보안에 관련된 항목으로 form으로 전송한 데이터가 실제 웹 페이지에서 작성한 데이터인지 판단해주는 가늠자 역할을 한다. 만약 해커가 엉뚱한 방법으로 데이터를 전송할 경우에는 서버에서 발행한 csrf_token 값과 해당 툴에서 보낸 csrf_token 값이 일치하지 않기 때문에 오류가 발생할..

Web/Django 2021.08.03

Django(장고) url 별칭과 네임스페이스 살펴보기

이번에는 Django URL 별칭에 대해 정리해볼 것이다. 이전 게시물에서는 템플릿에 다음과 같이 html 코드를 작성했다. {{ question.subject }} 하지만 만약 url 형식을 /pybo/{{ question.id }} 에서 /pybo/question/{{ question.id }} 형식으로 변경해야한다고 하자. 이러한 경우에는 해당 url이 사용된 모든 html 문서를 찾아서 변경해주어야한다. 따라서 이런 문제점을 해결하기 위해 URL 별칭과 네임인터페이스를 사용한다! 1. URL 별칭 URL 별칭을 사용하기 위해선 URL 매핑에 name 속성을 부여해야한다. /notes/urls.py를 다음과 같이 수정한다. from django.urls import path from . import..

Web/Django 2021.08.03

Django(장고) 템플릿과 데이터 조회 및 URL 매핑하기

1. 데이터 목록 notes/views.py 파일의 index 함수를 다음과 같이 작성한다. from django.shortcuts import render from .models import Question def index(request): question_list = Question.objects.order_by('-create_date') #create_date를 역순으로 정렬 context = {'question_list': question_list} return render(request, 'notes/question_list.html', context) Question은 이전 게시물에서 생성한 모델 이름이고, Question.objects.order_by(기준)로 데이터를 정렬할 수 있다. ..

Web/Django 2021.08.02

Django(장고) 관리자 계정 생성 및 관리자 페이지 사용하기

1. 슈퍼유저(superuser) 장고 관리자를 사용하기 위해선, 장고 관리자 화면에 접속할 수 있는 슈퍼유저를 먼저 생성해야함. 슈퍼유저 생성 명령어는 다음과 같다. python manage.py createsuperuser 다음과 같이 사용자 이름, 메일 주소, 패스워드를 설정해준다. 비밀번호를 간단한 것으로 설정하면 아래와 같이 경고 문자가 출력된다. 실제로는 이렇게 취약한 비밀번호를 사용하면 안되지만, 연습용이므로 y를 눌러 그대로 진행했다. 2. 장고 관리자 화면 python manage.py runserver 명령어를 터미널에 입력하여 로컬 서버를 구동한 후, http://localhost:8000/admin 페이지로 접속하면 다음과 같은 화면을 볼 수 있다. 앞서 설정한 사용자 이름과 비밀번..

Web/Django 2021.08.02
728x90
반응형