본문 바로가기

파이썬 프로그래밍/Django기초

[Django] 프로젝트 초기 세팅 (static에 js, css 넣어 관리하기) 본 실습에 있어 장고의 설치와 프로젝트, 앱만들기가 되어있어야 실습이 가능합니다.앱과 프로젝트 이름은 사용자 임의대로 만드셔도 무관합니다. 1. 장고설치 바로가기2. 장고의 앱만들기 바로가기 지금 본 실습은 오픈소스 디자인을 가져와서 장고에 적용하고, css와 JavaScript를 어떻게 관리하는지 알아보는 실습입니다. 아래의 이미지는 제가 가져다가 쓰려는 오픈소스 입니다.주소를 보시면 제가 다운받아온 디자인 입니다. 이 이미지는 제가 장고에 옮겨서 성공적으로 적용한 이미지입니다.주소를 보시면 localhost로 되어있죠. 1. 프로젝트 Settings.py에서 세팅하기 INSTALLED_APPS에 자신이 추가한 앱 이름을 추가합니다. 자신이 동적파일 안에 추가할 디렉토리 주소입니다.이렇게 설정하면 앱안.. 더보기
[Django] 장고. 템플릿 상속받기 템플릿을 상속받는 이유HTML코드를 보면 부터 까지 중복적으로 사용하는 코드가 많을때 이 부분을 따로 html로 만들고 그대로 해당 코드들을 상속받아 편하게 사용할때 사용합니다. 1. 상속해줄 부모파일 만들기layout.html이라는 파일을 만들어주고 중복적으로 쓰는 코드들을 넣어줍니다.여기서 title과 body부분은 페이지마다 다르기 때문에 {% block %}을 사용합니다. 2. 상속받기메인페이지인 index.html입니다.아까 title은 block해줬었는데요 이부분만 빼고 지워줍니다. {% extends "elections/layout.html %}은 "경로"안에 있는 파일을 extends해서 상속받겠다는 뜻입니다.{% block title %} {% endblock %}사이에 타이틀정보를 넣어.. 더보기
[django] 장고. Page not found 404란? 404페이지 꾸며보기 Page not found 404란?클라이언트가 서버와 통신할 수 있는 상태이지만 서버를 찾을 수 없을때 나오는 오류로서버로 연결할수 없는 오류는 절대 아님. 그외 http 상태 코드@ 1xx (조건부 응답): 요청을 받았으며 작업을 계속한다100(계속): 요청자는 요청을 계속해야 한다. 서버는 이 코드를 제공하여 요청의 첫 번째 부분을 받았으며 나머지를 기다리고 있음을 나타낸다.101(프로토콜 전환): 요청자가 서버에 프로토콜 전환을 요청했으며 서버는 이를 승인하는 중이다.@ 2xx (성공): 클라이언트가 요청한동작을 수신하여 이해했고 승낙하였으며 성공적으로 처리200(성공): 서버가 요청을 제대로 처리했다는 뜻이다. 이는 주로 서버가 요청한 페이지를 제공했다는 의미로 쓰인다.201(작성됨): 성공적으.. 더보기
[django] 장고. dictionary를 사용하여 화면에 지지율 표시하기. 1. views에서 넘겨줄 results함수의 내용 수정하기코드복사는 아래코드 쓰시면 되고 아래에 코드를 쪼개서 설명 달아놓겠습니다.1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374from django.shortcuts import renderfrom django.http import HttpResponsefrom django.http import HttpResponseRedirectfrom .models import Candidate, Poll, Choiceimport datetimefrom django... 더보기
[Django] 장고. http redirect하기 1. 시작하기 전에바로전 글에서 했던 기능입니다. 여기서 선택을 누르면 '이렇게 votes가 1 올라가면서 해당 페이지로 넘어가게 되는데 이 페이지를 redirect해서 결과화면이 나오는 페이지로 바꿔보겠습니다. 2. 화면을 그려줄 html파일을 만들자mysite -> elections -> templates -> elections -> result.html파일을 만들어 아래 코드를 붙여넣어 줍니다.1234567891011121314151617181920212223242526272829303132 {{candidate.area}} 선거 결과 지역구 기간 후보1 후보2 기간1 후보1 지지율 후보2 지지율 Colored by Color Scriptercs 3. urls.py에서 어떤화면에서 이 html을 나.. 더보기
[Django] 장고. 버튼을 눌러 DB에 저장 1.area.html 화면디자인1. poll에 데이터가 들어온다면 표를 실행합니다.2. 아무 데이터가 없다면 해당 문자를 페이지에 출력합니다3. 조건문이 시작했으면 마무리를 반드시 지어줍니다.12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849 {{area}} {{area}}{% if poll %} 이름 소개 번호 투표하기 {% for candidate in candidates %} {{ candidate.name }} {{ candidate.introduction }} 번호{{ candidate.party_number }}번 {% csrf_token %} 선택 {% endfor %} {% else.. 더보기
[Django] 장고. 화면구현(DB내용을 불러와 화면에 출력) 1. 링크만들기elections -> index.html에 28, 29번째 줄을 수정합니다. a href = 링크를 넣어준다는 html코드로 클릭하면 areas라는 이름의 함수를 실행한다는 뜻입니다. 아래 코드 참고하여 수정하세요12345678910111213141516171819202122232425262728293031323334 해바라기반 반장선거 번호 이름 소개 동네 {% for candidate in candidates %} {{candidate.party_number}}번 {{candidate.name}} {{candidate.introduction}} {{candidate.area}} {% endfor %} Colored by Color Scriptercs elections -> urls.p.. 더보기
[Django] 장고. model 모델클래스 나눠 관리하기 model클래스를 나누기 전에 Data base의 외부키(foreign key)에 대한 개념이 잡혀있으면 이해하기 쉽습니다. 1. model클래스를 나눠야하는 이유하나의 DB 테이블이 있습니다.이렇게 테이블을 만들다보면 후보가 늘어날때마다 테이블을 계속 수정해 줘야하는 번거로움이 생길것입니다.그래서 model클래스를 나눠 관리하기 쉽고 효율적인 테이블을 만들게 됩니다. 위에 있는 테이블을 2개로 나눴습니다.어린이의 홍보기간 테이블과 어린이의 득표수 테이블로 나눴습니다. 두개의 테이블을 엮기 위해 공통적인 컬럼이 있는데 이것은 번호입니다. 이것을 외부키(Foreign key)라고 합니다. 2. 어린이의 홍보기간 클래스 만들기(Poll)1234class Poll(models.Model): start_date.. 더보기
[Django] 장고. MVC패턴의 기초, 이해 지금까지 해온 실습을 바탕으로 정리한 게시글 입니다. 1. MVC패턴의 구동순서가장 먼저 mysite라는 project -> mysite 폴터 -> urls.py 안에 있는 -> urlpatterns부터 보게 됩니다.보면 기본값이 elections.urls로 가라고 되어있네요그럼 elections.urls로 따라가 봅니다. elections 폴더 -> urls.py 안에 보면 -> views.py 파일 안에 index 함수를 가리키고 있습니다.따라가 보겠습니다. 따라가 보면 바로 전시간에 했던 내용입니다.전시간 강의 바로가기 클릭 (DB를 html화면에 출력하기) 그림으로 쉽게 보는 MVC 패턴장고의 MVC 패턴은 이렇게 정의할 수 있습니다.앞서 실습해봤던 것을 예를들어서 설명하자면Model (model.. 더보기
[Django] 장고. DB를 html화면에 출력하기 DB에 저장된 데이터들을 템플릿에 있는 html화면에 출력해 보겠습니다. 1. views.py에서 DB의 어린이 정보를 html에 전달Views.py에서 수정합니다.1. Candidate.objects.all(): Candidate의 모든 objects들을 불러와서 candidates라는 변수에 저장합니다.2. candidates변수안에 정보들을 context에 저장합니다.3. elections/index.html에 context의 정보들을 같이 전송합니다.123456789101112from django.shortcuts import renderfrom django.http import HttpResponse from .models import Candidate # Create your views her.. 더보기