meong_j
기록하는 습관.
meong_j
전체 방문자
오늘
어제
  • 분류 전체보기 (176)
    • 개인 공부 정리 (0)
    • 서버 운영 (37)
      • Linux (36)
    • Frontend (11)
      • Vue.js (10)
    • Backend (70)
      • Java (4)
      • Python (22)
      • Django (38)
      • Spring (6)
    • Database (5)
      • Oracle (4)
      • MySQL (1)
      • MariaDB (0)
    • Android (14)
      • Kotlin (6)
    • 배포 (9)
      • Docker (8)
      • AWS (1)
    • IT_study (29)
      • Coding test (17)
      • 알고리즘 (5)
      • 스터디 (6)

블로그 메뉴

  • 홈
  • 태그
  • 방명록
  • github

인기 글

반응형

태그

  • docker
  • django
  • 이차원배열정렬
  • 배포인프라
  • 코틀린자료형
  • gabagecollecter
  • Kotlin
  • 중첩라우트
  • 테크커리어
  • 개발자도서
  • router-link
  • 안드로이드adaptor
  • SASS Variables
  • 리눅스방화벽
  • DHCP
  • dp #알고리즘
  • dockersecret
  • 리눅스인증
  • Proxy
  • cpu사용률

최근 댓글

최근 글

250x250
hELLO · Designed By 정상우.
meong_j

기록하는 습관.

django 19. Profileapp 구현 시작
Backend/Django

django 19. Profileapp 구현 시작

2021. 10. 6. 17:31
728x90
반응형

DB 반영하기

  • 생성한 model 마이그레이션(migration)해서 db에 반영하기

 

 

views.py

from django.shortcuts import render

# Create your views here.
from django.urls import reverse_lazy
from django.views.generic import CreateView

from profileapp.forms import ProfileCreationForm
from profileapp.models import Profile


class ProfileCreateView(CreateView):
    model = Profile
    context_object_name = 'target_profile'
    form_class = ProfileCreationForm
    success_url = reverse_lazy('accountapp:hello_world')
    template_name = 'profileapp/create.html'

    def form_valid(self, form):
        temp_profile = form.save(commit=False)
        temp_profile.user = self.request.user
        temp_profile.save()
        return super().form_valid(form)
  • form_valid 함수 생성, form에서 user정보 가져오지 않아서 작업
  • temp_profile = form.save(commit=False) : temp_profile 변수에 form 데이터 가져와서 임시저장
  • temp_profile.user = self.request.user : temp_profile의 user 정보를 당사자인 user로 request보냄
  • temp_profile.save()  : 정상적으로 저장
  • super().form_valid(form) : 작성한 form 리턴

 

 

 

detail.html

{% extends 'base.html' %}
{% load bootstrap4 %}

{% block content %}

<div>
    <div style="text-align: center; max-width: 500px; margin: 4rem auto;">
        <p>
            <!-- 가입 시간 -->
            {{ target_user.date_joined }}
        </p>

        {% if target_user.profile %}
         <h2 style="font-family: NanumBarunpenB">
            {{ target_user.profile.nickname }}
        </h2>
        {% else %}
        <a href="{% url 'profileapp:create' %}">
            <h2 style="font-family: NanumBarunpenB">
                Create Profile
            </h2>
        </a>
        {% endif %}

        {% if target_user == user %}
        <a href="{% url 'accountapp:update' pk=user.pk %}">
            <p>
                Change Info
            </p>
        </a>
        {% endif %}

        {% if target_user == user %}
        <a href="{% url 'accountapp:delete' pk=user.pk %}">
            <p>
                Quit
            </p>
        </a>
        {% endif %}

    </div>

</div>

{% endblock %}
  • 유저가 profile 생성했으면 nickname 출력, 생성하지 않았으면 Create profile 링크 연결 

 

create.html

{% extends 'base.html' %}
{% load bootstrap4 %}

{% block content %}

<div style="text-align:center;  max-width: 500px; margin: 4rem auto">
    <div class="mb-4">
        <h4>Profile Create</h4>
    </div>
    <form action="{% url 'profileapp:create' %}"  method="post" enctype="multipart/form-data">
        {% csrf_token %}
        {% bootstrap_form form %}
        <input type="submit" class="btn btn-dark rounded-pill col-6 mt-3">
    </form>
</div>


{% endblock %}
  • 이미지, 닉네임, 메시지 입력하는 form 페이지 구현

 

 

  • 로그인 후 Profile 미등록한 유저의 detail화면

 

  • Profile 등록 페이지 화면

 

 

  • 생성된 nickname 출력 확인
반응형

'Backend > Django' 카테고리의 다른 글

django 21. get_success_url 함수 그리고 리팩토링  (0) 2021.10.06
django 20. Profileapp 마무리  (0) 2021.10.06
django 18. Profileapp 시작 그리고 ModelForm  (0) 2021.10.06
django 17. superuser, media 관련 설정  (0) 2021.10.06
django 16. Decorator를 이용한 코드 간소화  (0) 2021.10.06
    'Backend/Django' 카테고리의 다른 글
    • django 21. get_success_url 함수 그리고 리팩토링
    • django 20. Profileapp 마무리
    • django 18. Profileapp 시작 그리고 ModelForm
    • django 17. superuser, media 관련 설정
    meong_j
    meong_j
    #it #개발일기 #개발공부 #개발자 #백앤드 #생각정리 #시간은 실력에 비례한다 #뭐든지 꾸준히 열심히 #오늘의 내가 내일의 나를 만든다

    티스토리툴바