Back-End

Class View를 작성하다 보면 Template에게 context변수들을 전달하기 위해서 get_context_data()메소드를 오버라이딩 하여 사용한다. 그리고 주의할 점은 get_context_data()를 오버라이딩 한 후 super().get_context_data()를 꼭 작성해 주어야한다. 기본 타입은 아래와 같은 형태를 띄고 있다. class TestView(TemplateView): def get_context_data(self, **kwargs): context = super().get_context_data() return context 그렇다면 이 get_context_data()는 어떤 방식으로 작동하며 왜 super().get_context_data() 꼭 작성해 주어야하며 ..
apps.py? django application을 생성하면 여러 파일들이 생기는데 그중 apps.py라는 파일이 있다. 이 파일은 프로젝트 디렉토리의 settings.py에 INSTALLED_APPS에 디폴트 app 클래스를 등록하여 프로젝트 애플리케이션을 등록해 사용하곤 한다. 아래와 같이 말이다. 위 사진을 보면 Books.Config라는 클래스를 INSTALLED_APPS에 등록해주어 사용한다. apps.py의 활용 그렇다면 단지 apps.py는 이러한 용도만 있을까? 이외 용도가 더 있다. 예를 들어 홈화면을 만드는 코드라고 가정하자. 홈화면에는 각 모델들의 index페이지로 들어가는 링크들이 있다고 가정하자. # Project Directory's : views.py from django.vi..
클래스형 뷰? View는 요청을 받아 응답을 반환해주는 호출 가능한 "객체"이다. 함수로도 뷰를 작성할 수 있지만, 클래스로도 작성을 해줄 수 있다. 클래스로 작성된 뷰를 "클래스형 뷰"라고 부르며, 이를 사용하면 상속과 믹스인 기능을 사용해 코드를 재사용할 수 있고, 뷰를 체계적으로 작성할 수 있다. 클래스형 뷰의 시작점 앞에서 함수형으로 뷰를 작성할 때는 아래와 같은 형태로 작성을 하였다. urlpatterns = [ path('', views.index,name = 'index'), path('/',views.detail,name='detail'), path('/results/',views.results,name='results'), path('/vote/',views.vote,name='vote'..
Django에서는 form을 생성하는 클래스를 제공한다. 이는 django.forms.Form클래스를 상속해서 만들 수 있다. class NameForm(forms.Form): # CharField타입의 디폴트는 TextInput위젯이다. 만약 textarea로 변경하려면 widget=forms.Textarea로 변경해주어야한다. your_name = forms.CharField(label="Your Name",max_length=100) your_name2 = forms.CharField(label="Your Name 2", max_length=100, widget=forms.Textarea) 위 예제는 두개의 필드가 있는 폼 클래스이다. 기본적으로 label속성은 각 별 태그의 값을 의미하고, 이는 ..
Django는 템플릿을 상속시킬 수 있는 기능을 가지고 있다. 템플릿 상속의 장점은 템플릿 코드를 재사용할 수 있다 사이트의 룩 앤 필을 일관성있게 보여줄수 있다 와 같은 장점들이 있다. 부모 템플릿은 뼈대를 만들고, {% block %}태그를 통해 하위로 상속해줄 부분을 지정해 주면, 자식 템플릿은 부모 템플릿의 뼈대를 그대로 재사용하고 {% block %}부분만 채워주면 된다. 채워줄때는 부모 템플릿에서 지정한 블럭 이름을 block 옆에 붙여 채우고자 하는 블럭을 지정해주면 된다. {% block sidebar %} Home {% endblock %} {% block content %} {% endblock %} {% extends "inheritTest/parent.html" %} {% block..
Django 템플릿 시스템은 템플릿 문법으로 작성된 템플릿 코드를 해석해 템플릿 파일로 결과물을 만들어준다. 템플릿 코드를 템플릿 파일로 해석하는 과정을 장고에서 '렌더링' 이라고 부른다. 템플릿 변수 템플릿 코드에서 변수를 사용할 수 있다. 변수는 아래와 같은 형식을 사용한다. {{ variable }} 변수 속성에 접근하기 위해서 '.' 연산자가 있는데 이 연산자 해석은 아래와 같다. Dictionary타입인지 확인한다. 딕셔너리 타입인 경우 key값으로 해석한다 변수의 속성을 찾는다. 있다면 해당 변수의 속성으로 해석한다 리스트 속성인지 확인한다. 리스트 속성이면 인덱싱을 한다 위 세가지 모두 아닌경우 빈 문자열로 반환한다. 만약 이 반환되는 문자열을 바꾸고 싶다면 settings.py의 TEMPL..
Django는 파이썬 쉘을 이용해 데이터를 관리할 수 있는 API를 제공한다. ORM을 통해서 데이터에 대한 CRUD를 실습해보자 CRUD는 아래 네가지를 일컫는 말이다. Create Read Update Delete Django 쉘을 사용하기 위해서는 아래 명령어를 입력해 준다. python3 manage.py shell Create : 데이터 생성 / 입력 테이블에 레코드를 생성하는 것이다. 레코드를 생성하기 위해서는 필드값을 지정해 객체를 생성한다. 레코드를 생성해준 뒤에는 꼭 save()메소드를 호출해 주어야 한다. 이 이유는 save()명령을 실행하기 전에는 메모리에서만 변경이 되기 때문이다. 이는 SQL용어의 INSERT랑 동일하다. Read : 데이터 조회 데이터베이스로 부터 데이터를 조회하..
기본적으로 생성되는 장고 어드민 페이지 title은 아래와 같이 Django administration이라는 값으로 설정되어있다 이 값을 바꾸기 위해서는 프로젝트 디렉토리의 urls.py에서 설정해주면 된다. django.contrib 의 admin을 import 해준다. 그 다음 admin site의 site header, index title, site title변수를 오버라이딩 해서 재정의해주면 된다. // 프로젝트 디렉토리의 urls.py from django.contrib import admin from django.urls import path,include admin.site.site_header = "Simple Vote System" admin.site.index_title = "Adm..
models.py class Question(models.Model): question_text = models.CharField(max_length=200) pub_date = models.DateTimeField(verbose_name='date_published') def __str__(self): return self.question_text 어드민 사이트에 등록할 모델 클래스(models.ModelAdmin상속 받은 클래스)에 search_fields를 추가하면 검색 박스를 표시할 수 있다. 검색 박스에 단어를 입력하면 'LIKE'쿼리를 이용해서 question_text필드를 검색한다. search_fields에 여러 필드를 지정하면 지정된 필드들에 대해 입력된 단어를 검색한다. # Regist..
models.py class Question(models.Model): question_text = models.CharField(max_length=200) pub_date = models.DateTimeField(verbose_name='date_published') def __str__(self): return self.question_text 어드민 페이지에 등록할 모델 클래스에 list_filter속성을 추가하면 우측에 필터 사이드 바를 붙일 수 있다. 이 필터에는 모델의 필드 타입에 따라 적절한 항목들을 보여준다. 아래 예시에서는 pub_date는 DateTimeField이므로 이에 맞게 옵션을 제공하는 것이다.
models.py class Question(models.Model): question_text = models.CharField(max_length=200) pub_date = models.DateTimeField(verbose_name='date_published') def __str__(self): return self.question_text admin사이트에 들어가서 테이블 레코드 리스트를 보면 아래와 같이 나타난다. 여기에 나타나는 제목들은 각 모델들의 __str__()메소드의 리턴값을 레코드 제목으로 사용한다. class Question(models.Model): question_text = models.CharField(max_length=200) pub_date = models.DateT..
models.py 아래와 같이 모델들이 선언되어있다고 하자, Question는 Choice의 Foreign Key이다. 즉 서로 연관된 데이터라는 의미이다. 연관된 데이터인 만큼 데이터 CRUD를 할때 같은 한 페이지에서 관리하면 더 좋다 class Question(models.Model): question_text = models.CharField(max_length=200) pub_date = models.DateTimeField(verbose_name='date_published') def __str__(self): return self.question_text class Choice(models.Model): question = models.ForeignKey(Question,on_delete=m..
Hoplin
'Back-End' 카테고리의 글 목록 (2 Page)