필드 유형
AutoField
ID를 기준으로 자동으로 커지는 IntegerField 필드입니다. 일반적으로 이 필드를 직접 사용할 필요는 없습니다. 다른 필드에 기본 키를 지정하지 않으면 Django 기본 키 필드가 자동으로 추가됩니다.
BigIntegerField
IntegerField와 유사하며 범위는 -9223372036854775808인 64비트 정수입니다. 9223372036854775807로. 기본 양식 위젯은 TextInput입니다.
BooleanField
부울 값(true/false) 필드입니다.
기본 양식 위젯은 CheckboxInput입니다.
빈 값으로 null을 사용하려면 NullBooleanField를 사용하면 됩니다.
CharField
class CharField(max_length=None[, **options])
작은 문자열과 큰 문자열 모두에 적합한 문자열 필드입니다.
더 큰 텍스트의 경우 TextField를 사용해야 합니다.
기본 양식 위젯은 TextInput입니다.
CharField에는 전달되어야 하는 매개변수인 max_length(필드의 최대 문자 수)가 있습니다. 이는 데이터베이스 수준과 Django의 데이터 유효성 검사 수준 모두에서 작동합니다.
CommaSeparatedInterField
class CommaSeparatedIntegerField(max_length=None[, **옵션])
쉼표로 구분된 정수 시퀀스를 저장하는 데 사용됩니다. CharField와 마찬가지로 max_length 매개변수와 함께 제공되어야 합니다. 또한 데이터베이스마다 max_length가 다릅니다. 제한.
DateField
class DateField([auto_now=False, auto_now_add=False, **옵션])
이 필드는 Python의 datetime.date 인스턴스를 사용하여 날짜를 나타냅니다. 추가 선택적 매개변수는 다음과 같습니다.
DateField.auto_now: 개체가 저장될 때마다 Django는 자동으로 이 필드의 값을 현재 시간으로 설정합니다. 일반적으로 "최종 수정"을 의미하는 데 사용됩니다. 시간. 기본값이 아닌 현재 날짜가 사용되므로
에서는 기본값을 덮어써서 저장 시간을 변경할 수 없습니다.
DateField.auto_now_add: 객체가 처음 생성될 때 Django는 이 필드의 값을 일반적으로 객체 생성 시간을 나타내는 데 사용되는 현재 시간으로 자동 설정합니다. 또한 기본값 대신 현재 날짜를 사용합니다.
기본 양식 위젯은 TextInput입니다.
참고: auto_now 또는 auto_now_add가 True로 설정된 경우 필드에는 editable=True 및 공백=True 설정이 적용됩니다.
DateTimeField
class DateTimeField([auto_now=False, auto_now_add=False, **options])
이 필드는 datetime.datetime 인스턴스를 사용하여 날짜와 시간을 나타냅니다. 이 필드는 DateField와 동일한 매개변수를 허용합니다.
기본 양식 위젯은 TextInput입니다. Django의 관리자는 날짜와 시간을 각각 표시하기 위해 javaScript 바로가기 옵션과 함께 두 개의 TextInput을 사용합니다.
DecimalField
class DecimalField(max_digits=None, 소수점_places=None[, **options])
Decimal 인스턴스를 사용하여 고정 정밀도 십진수를 나타내는 필드입니다. 여기에는 두 가지 필수 매개변수가 있습니다.
DecimalField.max_digits: 숫자에 허용되는 최대 자릿수
DecimalField.decimal_places: 소수에 대한 최대 자릿수
예를 들어, 숫자의 최대값은 999이고 소수점 이하 두 자리를 사용하려면 다음을 사용할 수 있습니다.
models.DecimalField(..., max_digits=5, 소수점_places=2)
십억 단위의 숫자를 소수점 이하 10자리까지 저장하려면 다음과 같이 작성하세요.
models.DecimalField(..., max_digits=19,decimal_places=10)
기본 양식 위젯은 TextInput입니다.
EmailField
class EmailField([max_length=75, **options])
이메일 유효성 검사 기능이 있는 CharField입니다.
참고: 최대 길이는 기본적으로 75자이며 RFC3696/5321과 호환되는 모든 이메일 주소를 저장할 수는 없습니다. 모두 저장하려면
max_length=254로 설정하세요. 75로 설정하는 것은 레거시 문제입니다.
FileField
class FileField(upload_to=None[, max_length=100, **options])
파일 업로드 필드
참고: 이 필드는 PRimary_key 및 고유 매개변수를 지원하지 않습니다. 그렇지 않으면 TypeError가 발생합니다. 이상.
필수 매개변수가 하나 있습니다:
FileField.upload_to
파일을 저장하는 데 사용되는 로컬 파일 시스템입니다. MEDIA_ROOT 설정을 기반으로 파일의 url 속성을 결정합니다.
경로에는 파일을 업로드할 때 현재 날짜/시간으로 대체할 수 있는 시간 형식 문자열 strftime()이 포함될 수 있습니다. 이렇게 하면 파일을 업로드할 때 디렉터리가 채워지지 않습니다.
이 매개변수는 함수와 같이 호출 가능한 항목일 수도 있습니다. 함수를 호출하여 파일 이름이 포함된 업로드 경로를 얻을 수 있습니다. 이 콜러블은 두 개의 인수
를 허용하고 파일을 저장하려면 Unix 스타일 경로(/슬래시 포함)를 반환해야 합니다. 두 매개변수는 다음과 같습니다.
인스턴스: 현재 FileField의 모델 인스턴스를 정의합니다. 보다 정확하게는 해당 파일이 첨부된 모델 인스턴스입니다.
대부분의 경우 파일을 저장할 때 모델은 인스턴스 개체는 기본 AutoField를 사용하고 있을 가능성이 높으며 데이터베이스에서 기본 키 값을 아직 얻지 못했기 때문에 아직 데이터베이스에 저장되지 않았습니다.
파일 이름: 업로드된 파일의 원래 이름입니다. 최종 경로를 생성할 때 사용할 수 있습니다.
선택적 매개변수도 있습니다:
FileField.storage
파일 저장 및 검색을 담당하는 개체입니다.
기본 양식 위젯은 FileInput입니다.
참고: 모델에서 FileField 또는 ImageField를 사용하려면 다음 단계를 따르세요.
1 프로젝트 설정 파일에서 MEDIA_ROOT를 정의하고 저장하는 데 사용할 값을 설정해야 합니다. uploads 파일 디렉터리의 전체 경로입니다. (Django는 성능상의 이유로 데이터베이스에 파일을 저장하지 않습니다.)
그런 다음 MEDIA_URL을 정의하고 해당 값을 디렉터리를 나타내는 URL로 설정합니다.
웹 서버에서 사용하는 계정에 디렉터리에 대한 쓰기 권한이 있는지 확인하세요.
2. 모델에 FileField 또는 ImageField를 추가하고 Django에서 upload_to 항목이 정의되었는지 확인합니다.
MEDIA_ROOT의 어느 하위 디렉토리를 사용하여 파일을 저장해야 하는지 알아보세요.
3. 데이터베이스에 저장되는 것은 파일의 경로뿐입니다(MEDIA_ROOT에 대한 상대 경로입니다). 여러분은 Django가 제공하는 편리한 url 속성을 활용하는 것을 생각해 보셨을 것입니다. 예를 들어 ImageField 이름이 cup_shot인 경우
템플릿에서
{{ object.mug_shot.url }}
을 사용할 수 있습니다. 이미지의 전체 URL입니다.
예를 들어 MEDIA_ROOT가 '/home/media'로 설정되고 upload_to가 다음으로 설정되었다고 가정합니다. '사진/%Y/%m/%d'. upload_to의
중 '%Y/%m/%d'는 strftime()이고, '%Y'는 4자리 연도, '%m'은 2자리 월, '%d'입니다. '는 두 분 모두를 위한 Days입니다.
2007년 1월 15일에 파일을 업로드한 경우 파일은 /home/media/photos/2007/01/15 디렉토리에 저장됩니다.
업로드된 파일의 로컬 파일 이름, 파일 URL 또는 파일 크기를 얻으려면 name, url 및 size 속성을 사용할 수 있습니다.
참고: 파일을 업로드할 때 저장하는 파일의 위치와 유형에 주의하세요. 이렇게 하는 이유는 보안 취약점을 피하기 위해서입니다. 업로드된 각
파일을 확인해야 업로드된 파일이 원하는 파일인지 확인할 수 있습니다. 예를 들어
업로드된 파일을 확인하지 않고 맹목적으로 다른 사람이 파일을 업로드하도록 허용하는 경우, 파일이 저장된 디렉터리가 웹 서버의 루트 디렉터리에 있는 경우, 누군가 CGI 또는 PHP를 업로드하는 경우
스크립트를 작성한 후 스크립트 URL에 접속하여 업로드된 스크립트를 실행하는 것은 너무 위험합니다. 이런 일이 발생하지 않도록 하세요!
기본적으로 데이터베이스에 있는 FileField 인스턴스의 해당 열은 varchar(100)입니다. 다른 필드와 마찬가지로 max_length를 사용할 수 있습니다. 매개변수는 필드의 최대 길이를 변경합니다.
FileField 및 FieldFile
클래스 FieldFile
모델의 FileField
필드에 액세스하면 FieldFile의 인스턴스가 프록시로 제공됩니다. 기본 레이어에 액세스합니다. 인스턴스에는 파일 데이터와 상호 작용하는 데 사용할 수 있는 여러 속성과 메서드가 있습니다.
FieldFile.url
파일의 상대 URL에 액세스하려면 읽기 전용 방식으로 기본 스토리지 클래스의 url() 메서드를 호출하세요.
FieldFile.open(mode='rb')
파이썬의 open() 메서드와 유사합니다.
FieldFile.close()
파이썬의 close() 메서드와 유사합니다.
FieldFile.save(name,content,save=True)
이 메서드는 파일 이름과 파일 콘텐츠를 필드에 전달한 다음 모델에 저장합니다. 이 방법에는 두 가지 필수 매개변수(이름, 파일 이름, 콘텐츠)가 필요합니다. 파일의 내용을 포함하는 객체입니다. 저장 매개변수는 선택사항이며 주로
는 파일 수정 후 인스턴스 저장 여부를 제어합니다. 기본값은 True 입니다. 콘텐츠 매개변수는 django.core.files.File이라는 점에 유의하세요. Python의 내장 File 객체가 아닌 의 인스턴스입니다. 다음과 같이
을 사용하여 기존 Python 파일 객체에서 파일을 빌드할 수 있습니다.
from django.core.files import File
# Python의 내장 기능을 사용하여 기존 파일을 엽니다. open()f = open('/tmp/hello.world')
myfile = File(f)
또는 문자열로 구성:
from django.core.files.base import ContentFile
myfile = ContentFile("hello world")
FieldFile.delete(save=True)
삭제 이 파일과 관련된 파일 인스턴스를 삭제하고 이 필드의 모든 속성을 지웁니다.
참고: delete()가 호출될 때 파일이 열려 있는 경우 이 메서드는 파일을 닫습니다.
저장 매개변수는 선택사항이며 파일 삭제 후 인스턴스 저장 여부를 제어합니다. 기본값은 True 입니다.
모델 삭제 시 관련 파일은 삭제되지 않으니 주의하시기 바랍니다. 이러한 고아 파일을 삭제하려면 직접 처리해야 합니다(예를 들어 정리 명령을 수동으로 실행하거나 cron을 통해 정기적으로 정리 명령을 실행할 수 있음)
FilePathField
class FilePathField(경로=없음 [, 일치=없음, 재귀=False, max_length=100, **options])
파일 시스템 아래 디렉터리의 특정 파일을 선택하는 데 사용되는 CharField입니다. 세 개의 독점 매개변수가 있으며 첫 번째 매개변수
만 필수입니다.
FilePathField.path
이 매개변수는 필수입니다. FilePathField가 파일을 선택하는 데 사용하는 디렉터리의 절대 경로입니다. 예: "/home/images".
FilePathField.match
선택적 매개변수. FilePathField가 파일 이름을 필터링하는 데 사용하는 정규식 문자열입니다. 기준에 맞는 파일만
파일 선택 목록에 나타납니다. 정규식은 파일 경로가 아닌 파일 이름만 일치합니다. 예를 들어 "foo.*.txt$"는
foo23.txt와만 일치하고 bar.txt 및 foo23.gif와는 일치하지 않습니다.
FilePathField.recursive
선택적 매개변수입니다. 해당 값은 True 또는 False입니다. 기본값은 거짓입니다. 경로 아래에 하위 디렉터리를 포함할지 여부를 지정합니다.
FilePathField.allow_files
이 항목은 Django 1.5에 새로 추가된 항목입니다. 값이 True 또는 False인 선택적 매개변수입니다. 기본값은 다음과 같습니다. 진실. 지정된 위치에 파일을 포함할지 여부를 지정합니다. 이 항목과 allowed_folders 중 하나가 True여야 합니다.
FilePathField.allow_folders
Django 1.5의 새로운 콘텐츠. 선택적 매개변수이며 해당 값은 True 또는 False입니다. 기본값은 거짓입니다. 지정된 위치에 디렉터리를 포함할지 여부를 지정합니다. 이 항목 중 하나와 Allow_files는 다음과 같아야 합니다. 진실.
앞서 언급했듯이 일치는 파일 경로가 아닌 파일 이름만 일치합니다. 따라서 다음 예:
FilePathField(path="/home/images", match="foo.*", recursive=True)
는 /home/images/와 일치합니다. /home/images/foo/bar.gif 대신 foo.gif. 이는 일치 항목만 파일 이름과 일치하기 때문입니다.
(foo.gif 및 bar.gif).
기본적으로 데이터베이스에 있는 FilePathField 인스턴스의 해당 열은 varchar(100)입니다. 다른 필드와 마찬가지로 max_length를 사용할 수 있습니다. 매개변수는 필드의 최대 길이를 변경합니다.
FloatField
class FloatField([**options])
이 필드는 Python의 float 인스턴스를 사용하여 부동 소수점 숫자를 나타냅니다.
기본 양식 위젯은 TextInput입니다.
FloatField와 DecimalField의 차이점에 유의하세요.
이미지 필드
클래스 ImageField(upload_to=None[, height_field=None, width_field=None, max_length=100,**options])
업로드된 개체가 합법적인 이미지 파일인지 확인한다는 점을 제외하면 FileField와 동일합니다.
FileField에서 유효한 매개변수 외에도 ImageField는 File.height 및 File.width 두 가지 속성을 사용할 수도 있습니다. .
두 가지 선택적 매개변수가 있습니다:
ImageField.height_field
이미지 높이를 보유하는 필드의 이름입니다. 개체를 저장할 때 이미지 파일은 이 필드에 설정된 높이에 따라 크기가 조정되고 변환됩니다.
ImageField.width_field
이미지의 너비를 저장하는 필드 이름입니다. 개체를 저장할 때 이미지 파일은 이 필드에 설정된 너비에 따라 크기가 조정되고 변환됩니다.
기본적으로 ImageField 인스턴스는 데이터베이스의 varchar(100)에 해당합니다. 목록. 다른 필드와 마찬가지로 max_length 매개변수를 사용하여 필드의 최대 길이를 변경할 수 있습니다.
IntegerField
class IntegerField([**options])
정수 필드입니다. 기본 양식 위젯은 TextInput입니다.
IPAddressField
class IPAddressField([**options])
IP 주소 필드를 문자열 형식(예: "192.0.2.30")으로 나타냅니다. 기본 양식 위젯은 TextInput입니다.
GenericIPAddressField
class GenericIPAddressField([**options])
Django1.4의 새로운 기능입니다.
IP4 또는 IP6 주소 필드를 문자열 형식(예: "192.0.2.30" 또는 "2a02:42fe::4")으로 나타냅니다. 기본 양식 위젯은 TextInput입니다.
IPv6 주소 형식은 RFC 4291 섹션을 따릅니다. 2.2. 예를 들어, 이 주소가 실제로 IPv4 주소인 경우 마지막 32비트는 "::ffff:192.0.2.0"과 같이 십진수로 표시될 수 있습니다.
2001:0::0:01은 2001::1로 쓸 수 있고, ::ffff:0a0a:0a0a는::ffff:10.10.10.10으로 쓸 수 있습니다. 문자는 모두 소문자입니다.
GenericIPAddressField.protocol
입력 프로토콜의 유효성을 확인합니다. 기본값은 IPv4 또는 IPv6인 'both'입니다. 이 항목은 대소문자를 구분하지 않습니다.
GenericIPAddressField.unpack_ipv4
::ffff:192.0.2.1 과 같은 IPv4 매핑 주소를 설명합니다. 이 옵션이 활성화되면 주소는 192.0.2.1 로 해석됩니다. 기본값은 비활성화되어 있습니다. 경우에만 프로토콜이 '모두'로 설정된 경우에만 활성화할 수 있습니다.
NullBooleanField
class NullBooleanField([**options])
BooleanField와 유사하지만 추가 NULL 옵션이 있습니다. null=True 옵션이 있는 BooleanField 대신 이 필드를 사용하는 것이 좋습니다.
기본 양식 위젯은 NullBooleanSelect입니다.
PositiveIntegerField
class PositiveIntegerField([**options])
IntegerField와 유사하지만 필드 값은 음수가 아니어야 합니다.
PositiveSmallIntegerField
class PositiveSmallIntegerField([**options])
는 PositiveIntegerField와 유사하지만 값 범위가 더 작고 데이터베이스 설정에 따라 제한됩니다.
SlugField
class SlugField([max_length=50, **options])
슬러그는 이벤트에 대한 짧은 레이블을 가리키는 뉴스 용어입니다. 문자, 숫자, 밑줄 또는 하이픈으로만 구성할 수 있습니다. 일반적으로 URL의 일부로 사용됩니다.
CharField와 유사하게 max_length를 지정할 수 있습니다(이 섹션에 언급된 데이터베이스 호환성 및 max_length에 유의하세요). 지정하지 않은 경우 max_length, Django는 필드 길이를 기본적으로 50으로 설정합니다.
이 필드는 Field.db_index를 자동으로 True로 설정합니다.
다른 필드의 값을 기반으로 슬러그 필드를 자동으로 채우는 것이 유용합니다. Django 관리자에서 prepopulated_fields를 사용할 수 있습니다. 이것을 하기 위해.
SmallIntegerField
class SmallIntegerField([**options])
는 IntegerField와 유사하지만 값의 범위가 더 작고 데이터베이스 제한으로 인해 제한됩니다.
TextField
class TextField([**options])
큰 텍스트 필드입니다. 기본 양식 위젯은 Textarea입니다.
TimeField
class TimeField([auto_now=False, auto_now_add=False, **옵션])
이 필드는 Python의 datetime.time 인스턴스를 사용하여 시간을 나타냅니다. DateField와 동일한 자동 완성 매개변수를 허용합니다.
기본 양식 위젯은 TextInput입니다.
URLField
URL을 저장하는 클래스 URLField([max_length=200, **options])
CharField입니다.
모든 CharField 하위 클래스와 마찬가지로 URLField는 선택적 max_length 매개변수를 허용하며 기본값은 200입니다.
위 내용은 Django 문서 - Model field type(FieldTypes) 내용입니다. 더 많은 관련 글은 PHP 중국어 홈페이지(www.php.cn)를 참고해주세요!