ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 파이썬 장고 정리내용
    기타/파이썬 2021. 1. 8. 16:58

    models.py

    class 모델이름(models.Model):
        필드이름1 = models.필드타입(필드옵션)

    필드는 데이터베이스에셔 테이블 열을 의미한다.

    단 필드 이름을 (clean, save, delete)같은 모델 API와 동일한 이름을 주면 안된다.

     

    Model은 데이터 서비스를 제공하는 레이아웃이다.

    여기에 사용되는 변수는 테이블 컬럼 메타 데이터를 정의한다.

    만약 컬럼이 추가 될 경우 꼭 마이그레이션을 해줘야 테이블에 반영이 된다.

     

    데이터베이스 필드 이름은 소문자와 밑줄로 표기한다.

     

    CharField - TextInput

    문자열 데이터를 저장하는 필드

    (max_length) 최대 글자 수를 반드시 지정해주어야한다.

     

    SlugField

    제목의 별칭, 포스트를 설명하는 핵심 단어의 집합

    pk를 사용하면 숫자로만 되어 뜻을 유추하기 어렵지만 슬러그는 단어들이라 이해하기 쉽다.

    디폴트 길이는 50이다.

    unique옵션을 이용해 특정 포스트를 검색할 때 기본 키 대신 사용된다.

     

    allow_unicode - 한글 처리가 가능하다.

     

    blank - 공백이 가능하다(필수 입력이 아니다)

     

    help_text - 컬럼의 설명

     

    TextField - Textarea

    max_lengh 값을 지정하면 폼에서는 글자 수가 제한되지만 데이터베이스에는 영향을 주지 않는다.

     

    DateTimeField - TextInput

    두개의 textinput, 달력위젯, 오늘 날짜 입력 기능을 기본 제공한다.

     

    auto_now_add - 생성시 현재 시간 자동 저장, 기본값을 재정의 할 수 없다

    auto_now - 저장될 때마다 자동으로 필드를 현재시간으로 설정

     

    class Meta

    클래스의 클래스

    클래스가 동작하는 방식을 정의한다

     

    verbose_name

    사용자가 읽기 쉬운 모델 객체의 이름으로 관리자 화면에 표시된다

     

    verbose_name_plural

    verbose_name과 동일하나 복수형이다

    verbose_name 옵션을 지정하지 않으면 verbose_name에 s를 붙인다.

     

    db_table

    데이터베이스 테이블의 이름을 정의한다.

     

    ordering

    모델의 정렬 순서를 지정하며 기본 오름차순이다.

    앞에 '-' 을 붙이면 내림차순으로 정렬된다.

     

    def는 함수/메서드라는 뜻이다.

     

    __str__()

    모델 클래스의 객체 문자열 표현을 리턴한다.

    디폴트 값은 모델명 object이다.

    디폴트 문자열인 경우 객체를 알아보기 어렵기 때문에 정의해 주는 것이 좋다.

     

    get_absolute_url()

    어떠한 모델에 대해 detail 뷰를 만들게 되면 무조건 선언

    이 메소드가 정의된 객체를 지칭하는 url을 반환한다

    장고 내장 함수인 *reverse()를 호출한다

     

    reverse()

    파이썬 코드 안에서 URL 템플릿 태그와 비슷하게 동작하는 기능

    urls.py에서 설정한 URL의 name이나, viewname을 통해서 다시 URL로 되돌릴 수 있다

    인수가 있는 URL이라면 *args를 포함할 수 있다

    *kwargs로 전달하는 것 또한 가능하지만 args와 동시에 전달 할 수 없다.

    일치하는 URL이 없으면 NoReverseMatch 에러가 발생한다.

     

    *args

    *arguments(인수)의 줄임말이다

    그래서 꼭 저 단어를 쓸 필요 없이 *myNames라고 적어도 된다

    이 지시어는 여러 개(복수개의) 인자를 함수로 받을 때 쓰인다

     

    **kwargs

    keyword argument의 줄임말로 키워드를 제공한다

    '키워드': '특정 값' 으로 함수 내부에 전달

     

     

     

    admin.py

    from .models import 내가 만든 모델
    
    @admin.register(내가 만든 모델)
    class 클래스이름(admin.ModelAdmin)

    admin.ModelAdmin 상속을 통해 커스터마이징을 할 수 있다.

     

    list_display = Admin목록에 보여질 필드 목록

    list_display_links = 목록내에서 링크로 지정할 필드목록 (지정하지 않으면 첫번째 필드에만 링크가 적용)

    list_filter = 필터 옵션을 제공할 필드 목록
    search_fields = 검색박스를 표시하고 입력된 단어는 정의한 컬럼에서 검색한다
    prepopulated_fields = 지정된 필드는 정의한 필드를 사용해 채워지게 만든다

     

     

    urls.py

    urlpatterns = [
        path('', views.동작클래스이름.as_view(), name='이름정의'),
    
    ]

    app_name

    url의 name값 중복을 방지하기 위해서 네임스페이스를 사용한다.

    ex) blog:index

     

     

    views.py

    class 클래스 이름 (제네릭뷰):

    장고 제네릭뷰 (일부)

    분류 이름 기능
    Base View View 가장 기본이 되는 최상위 뷰
    TemplateView 템플릿이 주어지면 해당 탬플릿을 렌더링
    RedirectView URL이 주어지면 해당 URL로 리다이렉트
    Generic Display View ListView 조건에 맞는 여러개의 객체를 보여줌
    DetailView 객체하나에 대한 상세한 정보를 보여줌
    Generic Edit View FormView 폼이 주어지면 해당 폼을 보여줌
    CreateView 객체를 생성하는 폼을 보여줌
    UpdateView 기존객체를 수정하는 폼을 보여줌
    DeleteView 기존객체를 삭제하는 폼을 보여줌
    Generic Date View ArchiveIndexView 조건에 맞는 객체 및 객체들에 대한 날짜 정보를 보여줌.
    YearArchiveView  연도에 해당하는 객체들을 보여줌.
    이하 생략
     

     

    자주 사용하는 속성과 메소드

    제네릭뷰의 속성

    속성 설명 디폴트
    model 작업대상 데이터가 들어있는 모델을 지정, model대신 queryset으로 지정할수있음.  
    queryset 작업대상이 되는 QuerySet 객체를 지정  
    template_name 렌더링할 템플릿 파일명을 지정 <model_name>_list.html
    <model_name>_detail.html 외
    context_object_name 템플릿 파일에서 사용할 컨텍스트 변수명을 지정 object_list, object 외
    paginate_by 페이지기능이 활성화된 경우 페이지당 몇개항목을 출력할지 정수로 지정  
    date_field 날짜기반뷰에서 기준이 되는 필드를 지정, 이 필드를 기준으로 년/월/일을 검사  
    form_class 폼을 만드는데 사용할 클래스를 지정  
    initial 폼에 사용할 초기데이터를 사전{ }으로 지정  
    fields 폼에 사용할 필드를 지정  
    success_url 폼에 대한 처리가 성공한 후 리다이렉트할 url지정  
    month_format '월'이 어떻게 출력되는지 정의  
    success_url 폼에 대한 처리가 성공한 후 리다이렉트할 url지정  

     

    제네릭뷰의 메소드

    메소드 설명
    get_queryset() 출력객체를 검색하기 위한 대상 QuerySet 객체 또는 출력대상인 객체리스트를 반환한다. 디폴트는 queryset속성값을 반환한다. queryset 속성이 지정되지 않는 경우는 모델 매니저 클래스의 all()메소드를 호출해 QuerySet 객체를 생성하고 이를 반환한다.
    get_context_data(**kwargs) 뷰에서 템플릿 파일에 넘겨주는 context 데이터를 추가하거나 변경하는 목적으로 오버라이딩 한다.
    form_valid(form) 제출된 폼이 유효성검사를 통과하면 호출되는 메소드
    또는 get_success_url()메소드가 반환하는 url로 리디이렉트를 수행

     

     

    댓글

Designed by Tistory.