# Django 5.2.9 문서

# Django 1.0 릴리스 노트

Django 1.0에 오신 것을 환영합니다!

우리는 3년 넘게 이 순간을 고대해 왔습니다. Django 1.0은 현재까지 Django 개발에서 가장 큰 이정표를 나타냅니다: 완벽주의자 그룹이 진정으로 자랑스러워할 수 있는 웹 프레임워크입니다.

Django 1.0은 오픈 소스 프로젝트로서 3년 이상 동안 커뮤니티에서 개발되었습니다. Django는 수백 명의 개발자로부터 기여를 받았으며, 50개 언어로 번역되었고, 오늘날 모든 대륙의 개발자들이 모든 종류의 직업에서 사용하고 있습니다.

흥미로운 역사 기록: Django가 2005년 7월에 처음 출시되었을 때, Django의 초기 출시 버전은 개정 번호 8825의 내부 저장소에서 나왔습니다. Django 1.0은 공개 저장소의 개정 8961을 나타냅니다. 우리의 1.0 릴리스는 커뮤니티 기여가 비공개 기여를 능가하는 순간에 릴리스하는 것이 적절해 보입니다.

## 안정성 및 상위 호환성

Django 1.0의 출시는 API 안정성과 상위 호환성을 약속합니다. 간단히 말해서 이것은 Django 1.0에 대해 개발한 코드가 변경되지 않은 1.1에 대해 계속 작동하며, 모든 1.X 릴리스에 대해 사소한 변경만 수행해야 함을 의미합니다.

자세한 내용은 :doc:`API 안정성 가이드 </misc/api-stability>`을 참조하세요.

## 이전 버전과 호환되지 않는 변경

Django 1.0에는 Django 0.96에서 이전 버전과 호환되지 않는 여러 변경 사항이 있습니다. 이식해야 하는 Django 0.96 앱이 있는 경우 자세한 이식 가이드를 참조하세요:

- Django 0.96에서 1.0으로 앱 포팅

이전 버전과 호환되지 않는 변경 사항의 전체 목록은 https://code.djangoproject.com/wiki/BackwardsIncompatibleChanges에서 찾을 수 있습니다.

## Django 1.0에서 무엇이 새로워졌나요?

정말 많습니다!

Django 0.96 이후로, 4,000번이 넘는 코드 커밋을 했고, 2,000개 이상의 버그를 고쳤으며, 대략 350,000 줄의 코드를 추가, 삭제, 수정하였습니다. 또한, 약 40,000 줄의 새로운 문서를 작성하여, 기존에 있었던 것에 비해 엄청난 개선이 있습니다.

실제로, 새로운 문서는 Django 1.0 의 사랑받는 기능 중 하나였고, 그래서 이것부터 시작하기로 하였습니다. 우선, 새로운 문서화 사이트는 이것입니다:

- https://docs.djangoproject.com/

문서화가 크게 개선되고 정리되었으며 일반적으로 훌륭해졌습니다. 이제 전용 검색, 인덱스 등이 있습니다.

1.0의 새로운 기능을 모두 문서화할 수는 없지만, 문서화는 당신의 최종 가이드가 되어줄 것입니다. 어디에서나 다음과 같은 것을 볼 수 있습니다:

New in Django 1.0:

이 기능은 Django 1.0 에서 새로이 추가되었습니다.

새로운 것이나 변경된 것을 보고 있다는 것을 알게 될 것입니다.

Django 1.0의 다른 주요 특징은 다음과 같습니다:

### 리팩터링된 관리자 애플리케이션

Django 관리 인터페이스(`django.contrib.admin`)가 완전히 리팩토링되었습니다. admin 정의는 이제 모델 정의에서 완전히 분리되었으며(더 이상 ``class Admin``을 모델에서 선언 할 필요가 없습니다!) Django의 새로운 양식 처리 라이브러리(0.96 릴리스에서 ``django.newforms``로 도입되었고, 이젠 간단히 ``django.forms``로 사용 가능)를 사용하도록 재작성되었으며, 확장성과 사용자 정의를 염두에 두고 재설계되었습니다. 관리 애플리케이션에 대한 전체 문서는 공식 Django 문서에서 온라인으로 제공됩니다:

자세한 내용은 :doc:`admin reference </ref/contrib/admin/index>`을 참조하십시오.

### 향상된 유니코드 처리

Django의 내부는 전체적으로 유니코드를 사용하도록 리팩터링되었습니다. 이는 Django에서 비서유럽 콘텐츠 및 데이터를 처리하는 작업을 대폭 단순화합니다. 또한 유니코드를 정상적으로 처리하거나 처리하지 않을 수 있는 타사 라이브러리 및 시스템과의 상호 운용성을 용이하게 하기 위해 유틸리티 기능이 제공되었습니다. 자세한 내용은 Django의 유니코드 처리 문서에서 확인할 수 있습니다.

:doc:`/ref/unicode`를 참조하십시오.

### 개선된 ORM

Django의 개체 관계형 매퍼(Django 모델 클래스와 데이터베이스 사이의 매핑을 제공하고 데이터베이스 쿼리를 중재하는 구성 요소)는 대규모 리팩토링을 통해 크게 향상되었습니다. 대부분의 Django 사용자에게 이는 이전 버전과 호환됩니다. 데이터베이스 쿼리를 위한 공용 API는 약간의 변경이 있었지만 대부분의 업데이트는 ORM의 내부에서 이루어졌습니다. 이전 버전과 호환되지 않는 수정 및 이 리팩토링으로 추가된 새로운 기능에 대한 언급을 포함한 변경 사항에 대한 가이드는 Django wiki에서 볼 수 있습니다.

### 템플릿 변수의 자동 이스케이프

XSS(교차 사이트 스크립팅) 취약성에 대해 향상된 보안을 제공하기 위해, Django의 템플릿 시스템은 이제 자동으로 변수 출력을 이스케이프 처리합니다. 이 동작은 변경 가능하며, 변수와 더 큰 템플릿 구성을 모두 안전(이스케이프 필요 없음) 또는 안전하지 않음(이스케이프 필요)으로 표시할 수 있습니다. 이 기능에 대한 전체 가이드는 `autoescape` 태그에 대한 문서에 있습니다.

### `django.contrib.gis` (GeoDjango)

1년 넘게 진행 중인 이 프로젝트는 `contrib` 애플리케이션의 형태로 Django에 세계적 수준의 GIS(Geographic Information Systems) 지원을 추가합니다. 해당 문서는 현재 외부에서 유지 관리되고 있으며, 곧 기본 Django 문서에 병합될 예정입니다. 이 기능을 만들고 완성하기 위해 노력한 Justin Bronn, Jeremy Dunck, Brett Hoerner 및 Travis Pinney에게 큰 감사를 드립니다.

자세한 내용은 :doc:`GeoDjango </ref/contrib/gis/index>`을 참조하세요.

### 플러그형 파일 스토리지

Django의 내장 `FileField` 및 ``ImageField``는 이제 플러그형 파일 스토리지 백엔드를 활용할 수 있으므로, 업로드된 파일이 Django에 의해 저장되는 위치와 방법을 광범위하게 사용자 정의할 수 있습니다. 자세한 내용은 :doc:`the files documentation </topics/files>`을 참조하십시오. 이 작업을 완료하기 위해 열심히 노력한 Marty Alchin에게 큰 감사를 드립니다.

### Jython 호환성

Google Summer of Code 프로젝트 동안, Leo Soto의 많은 작업 덕분에 Django의 코드베이스가 리팩터링되어 Java Virtual Machine에서 Python 코드를 실행하는 Java로 작성된 Python 구현인 `Jython`_과의 비호환성을 제거했습니다. Django는 이제 곧 출시될 Jython 2.5 릴리스와 호환됩니다.

### 양식 및 관리자의 일반적인 관계

클래스는 이제 ``django.contrib.contenttypes``에 포함되어 관리자 인터페이스와 최종 사용자 양식 모두에서 일반 관계를 지원하는 데 사용할 수 있습니다. 자세한 내용은 :ref:`제네릭 관계 <generic-relations> 문서`를 참조하십시오.

### `INSERT`/`UPDATE` 구분

모델의 `save()` 메서드가 SQL 수준에서 ``INSERT``을 수행할 것인지 ``UPDATE``를 수행할 것인지를 자동으로 결정하는 Django의 기본값 동작은 대부분의 경우에 적합하지만, 가끔 둘 중 하나를 강제하는 것이 유용할 때가 있습니다. 결과적으로, 이제 모델은 특정 작업을 강제할 수 있는 ``save()``에 대한 추가 매개변수를 지원할 수 있습니다.

자세한 내용은 :ref:`ref-models-force-insert`를 참조하십시오.

### `CacheMiddleware` 분할

Django의 `CacheMiddleware``는 세 가지 클래스로 분할되었습니다. ``CacheMiddleware` 자체는 여전히 존재하며 이전 기능을 모두 유지합니다. 그러나 이제는 캐싱의 두 부분(캐시에 삽입 및 읽기)을 개별적으로 처리하는 두 개의 개별 미들웨어 클래스에서 빌드됩니다. 이러한 기능을 하나의 미들웨어로 결합하면 문제가 발생하는 상황에 대해 추가적인 유연성을 제공합니다.

적절한 사용에 대한 업데이트된 참고 사항을 포함한 전체 세부 정보는 :doc:`the caching documentation </topics/cache>`에 있습니다.

### 리팩터된 `django.contrib.comments`

Google Summer of Code 프로젝트의 일환으로, Thejaswi Puthraya는 Django의 번들 주석 시스템을 대대적으로 재작성하고 리팩토링하여 유연성과 사용자 정의 가능성을 크게 높였습니다.

### 더 이상 사용되지 않는 기능 제거

이전에 ‘더 이상 사용되지 않는 것’으로 표시되고, 1.0 릴리스 이전에 제거될 예정이었던 많은 기능과 메서드가 Django에서 제거되었습니다. 여기에는 `django.newforms``(현재 ``django.forms``에 위치)에서 양식 라이브러리 가져오기, ``form_for_model` 및 `form_for_instance` 헬퍼 함수(``ModelForm``으로 대체됨), 디스패처로 대체된 여러 가지 사용되지 않는 기능들 및 Django 1.0 알파 릴리스에 도입된 파일 업로드 및 파일 저장 리팩토링이 포함됩니다.

## 알려진 문제들

우리는 Django 1.0을 가능한 한 견고하게 만들기 위해 최선을 다했지만, 안타깝게도 릴리스에서 몇 가지 알려진 문제가 있습니다.

### ``to_field``를 사용한 다중 테이블 모델 상속

다중 테이블 모델 상속 <multi-table-inheritance>’을 사용하는 경우, 다음을 주의하십시오: 사용자 지정 ``parent_link` 및 ``to_field``를 사용하는 자식 모델은 데이터베이스 무결성 오류를 일으킵니다. 다음과 같은 모델 집합은 유효하지 않습니다:

    class Parent(models.Model):
        name = models.CharField(max_length=10)
        other_value = models.IntegerField(unique=True)

    class Child(Parent):
        father = models.OneToOneField(
            Parent, primary_key=True, to_field="other_value", parent_link=True
        )
        value = models.IntegerField()

이 버그는 Django의 다음 릴리스에서 수정될 것입니다.

### 특정 데이터베이스 지원에 대한 주의 사항

Django는 모든 데이터베이스 백엔드에서 가능한 한 많은 기능을 지원하려고 합니다. 그러나 모든 데이터베이스 백엔드가 동일한 것은 아니며, 특히 지원되는 많은 데이터베이스가 버전마다 크게 다릅니다. :doc:`지원되는 데이터베이스에 대한 참고 사항 </ref/databases>`을 확인하는 것이 좋습니다:

- MySQL notes

- SQLite notes

- Oracle notes