해결된 질문
작성
·
135
0
{% target_user.profile %} <!-- target_user의 profile이 존재하면, -->
<h2 style="font-family: 'NanumSquareB'">
{{ target_user.profile.nickname }}
</h2>
{% else %]
이 부분에서 profile이 여기 이건 어디서 설정해 준건가요?
2. 6:03초에 보면, detail/2에서
create profile과 change info 둘다 나와있는데,
templates를 찾아보니,
change Info는 update.html에,
그리고 방금 만든 create profile은 detail에 있는데
왜 같이 나오는 걸까요...??
(html창을 다르게 만들었는데 왜 다른곳에 만든 연결창이
detail/2에서 같이 나올까요 ㅜ?)
마지막으로...
html { % %} 해당 정보는
뭐라고 검색하면 찾아볼 수 있을까요...? (혼자 공부가 필요할 거 같아서..)
이건 장고에서만 쓰이는 건가요...?
매번 이상한 질문 답변해주셔서 감사합니다ㅜ
답변 1
0
안녕하세요.
질문 확인했습니다.
profile 이라는 단어는 저희가 profileapp 에 만든 model 에서 확인할 수 있습니다.
class Profile(models.Model):
user = models.OneToOneField(User, on_delete=models.CASCADE,
related_name='profile')
image = models.ImageField(upload_to='profile/', null=True)
nickname = models.CharField(max_length=30, unique=True)
message = models.CharField(max_length=200, null=True)
위의 코드에서,
user 객체와의 연결고리를 만들어 주는 OneToOneField 를 사용하고 있습니다.
이때, 이 필드를 통해 user 객체와 profile 객체의 연결고리가 생성되는데,
user 객체를 확보했다고 했을때,
해당 user 객체에 연결되어있는 profile 객체에 접근하기 위해 사용 하는 문자열이
OneToOneField 에 작성한 related_name 옵션입니다.
해당 옵션을 profile 이라는 이름으로 설정했기 때문에,
user 객체에서 profile 이라는 이름으로 profile 객체에 접근이 가능한거에요.
만약 related_name 옵션이 'prof' 와 같이 설정되어있었다면,
보내주신 코드가
{% target_user.prof %} <!-- target_user의 profile이 존재하면, -->
<h2 style="font-family: 'NanumSquareB'">
{{ target_user.prof.nickname }}
</h2>
{% else %]
이런식으로 바뀌어야겠죠.
답변이 도움이 되셨길 바래요!
감사합니다-