📢 공지사항
home

Profileapp 구현 시작

복습
수강일
수강일_
숫자
31
주차
2주차
체크
태그
Profileapp Implementaion

View 만들기

지난 시간에 만들어둔 모델을 마이그레이트 해준다
python manage.py makemigrations
python manage.py migrate
class profileCreateView(CreateView): model = Profile context_object_name = 'target_user' form_class = ProfileCreationForm success_url = reverse_lazy('accountapp:hello_world') template_name = 'profileapp/create.html'
Python
복사
profileapp/create.html도 만들어준다
{% extends 'base.html' %} {% load bootstrap4 %} {% block content %} <div style = "text-align: center; max-width: 600px; margin: 4rem auto"> <div class="mb-4"> <h4><Profile Create/h4> </div> <form action="{% url 'profileapp:create' %}" method="post"> {% csrf_token %} {% bootstrap_form form %} <input type="submit" class="btn btn-dark rounded-pill col-6 mt-3"> </form> </div> {% endblock %}
Python
복사
path도 설정해준다
path('create/', ProfileCreateView.as_view(), name='create'),
Python
복사
accountapp/detatil.html에서 Profile Create로 연결할 수 있는 경로를 만들어준다
{% if target_user.profile %} <h2 style="font-family:: 'NanumSquareB'"> {{ target_user.profile.nickname }} </h2> {% else %} <a href="{% url 'profileapp:create' %}"> <h2 style="font-family:: 'NanumSquareB'"> Create Profile </h2> </a> {% endif %}
Python
복사
위와같이 입력한 후, 사진을 넣고 프로필을 저장하면 에러가 나온다
profileapp/create.html의 form action에 문제가 있는데,
image파일등을 받을때 폼에 enctype을 명시를 해줘야한다.
<form action="{% url 'profileapp:create' %}" method="post" enctype="multipart/form-date">
Python
복사
다음엔 프로필 앱에 id를 받을 수 있게 해줘야한다.
class ProfileCreateView(CreateView): model = Profile ... def form_valid(self, form): temp_profile = form.save(commit=Fasle)#실제 데이터베이스엔 저장하지 않고, temp_profile에 임시로 저장한다 temp_profile.user = self.request.user tenp_profile.save() retrun super().form_valid(form)
Python
복사