데이터베이스 필드값이 null일 때 데이터 받아오는 방법
class User(models.Model):
name = models.CharField(max_length=45, null=True)
email = models.CharField(max_length=100)
password = models.CharField(max_length=200)
mobile = models.CharField(max_length=100, null=True)
address = models.CharField(max_length=100, null=True)
birth_date = models.DateField(null=True)
- 만약 email 과 password만 필수값이며 다른 필드값들은 null이라면 어떻게 데이터를 create해야 할까
User.objects.create(
name = data['name'],
email = data['email'],
password = hashed_password,
mobile = data['mobile'],
address = data['address'],
birth_date = data['birth_date']
)
- 만약 null 값을 주지 않은 상태에서는 data[] 형태로 원하는 값을 불러온다. 왜냐하면 data값이 딕셔너리 형태이기 때문이다.
>>> d = {'key1':1, 'key2':2}
>>> d
{'key1': 1, 'key2': 2}
>>> d['key1']
1
- 위처럼
딕셔너리명['키']
형태로 키값을 불러온다.
>>> d['sssd']
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
KeyError: 'sssd'
- 하지만 null값을 준 필드명이 존재하지 않는데 딕셔너리의 키로 키값을 호출하면 keyerror가 발생한다.
>>> d.get('sssd')
>>> var = d.get('sssd')
>>> var = d.get('sssd',1)
딕셔너리.get('키')
형태로 값을 가져오면 keyerror가 발생하지 않는다.
- 만약 기본값을 지정해주고 싶다면
딕셔너리.get('키', 기본값)
형태로 지정해주면 된다.
정규식
+
- 반복을 의미하며 문자열이 한 번 이상 반복되는 것을 의미함
*
- 0 또는 그 이상의 문자가 연속될 수 있음을 말함