본문 바로가기

Web Programming35

쿠버네티스 네임스페이스 보호되어 있는 글 입니다. 2021. 10. 15.
쿠버네티스 보호되어 있는 글 입니다. 2021. 10. 15.
[Django] Model기반 form 형식 지정 목표 - model 기반의 form 형식을 지정할 수 있다. form 태그 form 태그는 웹 애플리케이션에서 데이터를 입력받는 태그이다. Model class Patient(models.Model): name = models.CharField(max_length=100) age = models.IntegerField() height = models.FloatField() weight = models.FloatField() blood = models.CharField(max_length=10) description = models.TextField() 만약, 위 코드에서 처럼 Model에 Patient라는 클래스가 있다면 우리는 이러한 데이터를 웹 애플리케이션에서 입력받기위해 template과 view에.. 2020. 6. 22.
[Django] 페이지네이션 목표 - 페이지네이션을 사용해 한 페이지당 일정한 수의 글만 제공할 수 있다. 페이지네이션(Pagination) 한 페이지당 일정한 수의 데이터만 보여주는 기능이다. 이런 게시글이 있을 때, 만약 게시글이 10만 건이 있다면, 게시글을 불러오는데 많은 시간을 소모하게 되고 또한 사용자가 특정 게시글을 찾기 위해서 계속해서 마우스 스크롤을 내려야하는 상황이 발생한다. 페이지네이션을 사용해 이러한 문제를 해결할 수 있다. 페이지네이터는 테이블의 레코드 중 지정한 수 개수만큼 페이지 단위로 관리해 사용자에게 제공한다. 현재 이 글이 포스트되고 있는 티스토리 블로그에서도 페이지네이션을 확인할 수 있다. Views.py(View) from django.core.paginator import Paginator de.. 2020. 6. 22.
[Django] 템플릿 확장 목표 - 템플릿 확장을 통해 html 코드 작성을 간결하게 한다. html 코드의 중복 html 코드를 작성하다보면, html 파일 마다 html 태그, head 태그, nav bar 등 중복되는 코드가 발생한다. {% load static %} {% if user.is_authenticated %} 새 글쓰기 {{user.username}} 로그아웃 {% else %} 회원가입 로그인 {% endif %} ... 이러한 소스 코드의 중복은 번거로울 뿐만 아니라 가독성마저 떨어뜨리게 된다. Django에서는 템플릿 확장을 통해 이러한 문제점을 해결할 수 있다. 하나의 중복된 코드를 저장해두는 base.html을 만들고, 그 안에 담겨져야할 다른 html 코드에 적용한다. base.html 생성 프로젝트 .. 2020. 6. 22.
[Django] 부트스트랩 목표 - 부트스트랩을 사용해 빠른 프론트엔드 개발을 할 수 있다. 부트스트랩(Bootstrap) 부트스트랩이란 Jquery 기반의 오픈소스 프론트엔드 라이브러리로, 버튼, 레이아웃 등 프론트 엔드에 필요한 많은 요소들을 내장하고 있어 빠른 프론트 엔드 개발을 지원한다. 또한, 제공하는 요소들은 반응형 웹을 지원하며, 부트스트랩을 사용해 개발하면, 협업 또는 프로젝트 인계 시에 빠른 캐치업이 가능하다는 이점을 가지고 있다. 컨텐츠 다운로드 부트스트랩에서 제공하는 css, javacript 등의 파일들을 다운로드하는 방법에는 두 가지 방법이 있다. 첫 번째는 부트스트랩 웹 페이지에서 직접 파일들을 다운받아 적용시키는 방법이다. 부트스트렙 홈페이지에서 관련된 리소스를 다운받아, 프로젝트 내에 static 디렉.. 2020. 6. 22.
[Django] URL 관리 목표 - app 단위로 url을 관리할 수 있다. urls.py urlpatterns = [ path('admin/', admin.site.urls), path('', blog.views.index, name='index'), path('detail//', blog.views.detail, name='detail'), path('create/', blog.views.create, name='create'), path('delete//', blog.views.delete, name='delete'), path('update//', blog.views.update, name='update'), path('login/', account.views.login, name='login'), path('signup/.. 2020. 6. 22.
[Django] 이미지 업로드 목표 - 사용자가 이미지를 업로드할 수 있는 기능을 구현한다. - 미디어 파일에 대해서 이해한다. Media file static 컨텐츠에는 두 가지 종류가 있다. 1) static file - 개발자가 웹 애플리케이션 개발을 위해 개발 과정에서 저장한 파일(css, javascript, image) 2) media file - 사용자가 웹 애플리케이션에 업로드한 파일(image) 저번 포스트에서 static file을 관리하는 방법을 알아보았으니, 이번에는 media file을 업로드하고 관리하는 방법을 알아보자 Media files 저장 및 전달 설정 media file을 저장하고 관리할 수 있는 디렉터리 설정과 url 전달 설정이 필요하다. settings.py에 아래의 코드를 추가한다. # 미디어.. 2020. 6. 21.
[Django] 정적파일 목표 - Django에서 정적파일을 관리하는 방법을 알아본다. 지난 CRUD Operation에 대한 포스트에서 '정적 컨텐츠'란 말을 잠깐 한적이 있었다. 정적 컨텐츠는 웹 애플리케이션의 구성요소 중 웹 서버에 저장되어있는 html, css, image 파일 등과 같이 컨텐츠가 고정되어 사용자의 요청에 따라 변하지 않는 컨텐츠를 의미한다. Django 에서는 이러한 정적 컨텐츠들을 프로젝트 디렉토리 내의 static 디렉토리에서 '프로젝트 단위'로 관리한다. 그럼 Django에서 정적 컨텐츠를 관리하는 방법을 알아보자 App 내의 static 디렉토리 생성 1) app 디렉터리(blog) 내에 static 디렉터리를 하나 생성 2) static 디렉터리 내에 css, js, img 디렉터리를 생성 3).. 2020. 6. 21.
[Django] 모델 관계 (2) 저번 포스트에서 1:n 관계를 맺는 방법에 대한 글을 썼다. 이번 글을 Django에서 1:1, 1:n, n:m의 관계를 맺는 예시이다. 1:1 관계 1:1 관계는 OneToOneField를 이용해 표현할 수 있다 OneToOneField는 ForeignKey에 Unique 속성을 True로 준 것과 동일하게 작동한다 class 모델이름(models.Model): 필드이름 = models.OneToOneField(관계대상모델) 1:1 관계를 표현하는 기본적인 방법을 위와 같다. class Husband(models.Model): name = models.CharField(max_lenght=10) age = models.IntegerFiled(default=0, blank=Ture, null=True) .. 2020. 6. 21.
[Django] 모델 관계 (1) 목표 - 사용자만이 게시글을 작성할 수 있도록 구현한다. - 모델 관계를 이해한다. 등록된 사용자만이 게시글을 작성할 수 있도록 구현해보자. 사실 이 부분은 게시글을 작성할 수 있는 권한은 등록된 사용자에게 제한을 둔다는 점보다 모델 간에 관계를 맺는다는 점에서 더 큰 의미가 있다. 이전 포스트까지 진행하면서 데이터베이스에는 아래와 같은 테이블들을 가지고 있다. 생각해보면 User라는 클래스는 따로 정의해주지 않았다. 하지만, Django는 User라는 모델을 기본적으로 제공하고 accout 앱 내의 views.py에서 from django.contrib.auth.models import User django.contrib.auth.models의 User 클래스를 import해서 사용하였다. Django.. 2020. 6. 21.
[Django] 회원가입 기능 만들기 목표 - auth를 이용해 회원가입 기능만들기 - 로그인, 로그아웃, 회원가입을 구현한다. app 생성 $ python3 manage.py startapp account 터미널에서 회원가입, 로그인, 로그아웃의 기능을 구현할 별도의 app을 생성한다. app을 생성했다면 settings.py에서 새로 생성한 app을 등록해준다. INSTALLED_APPS = [ 'django.contrib.admin', 'django.contrib.auth', 'django.contrib.contenttypes', 'django.contrib.sessions', 'django.contrib.messages', 'django.contrib.staticfiles', 'blog.apps.BlogConfig', 'account.. 2020. 6. 20.