📢 공지사항
home

Profileapp 구현 시작

수강계획
2022/01/12
번호
31
복습여부
수강여부
수강일
2022/01/13
속성
makemigrations, migrate해서 DB에 반영해주기
accountapp 만든거랑 동일하게 만들면 됨!
문제1. 이미지파일 업로드가 안됨
profile/create.html에서 form에 enctype=”multipart/form-data”를 명시해줘야 이미지를 받을 수 있음
문제 2. 프로필 user id가 없다고 나옴
models.py에는 user라는 필드가 존재함, form에서는 user라는 필드를 사용하지 않고 image, nickname, message 3개만 입력받게함(내 프로필이 아닌데 남의 프로필을 만들 수 있는 가능성때문에 서버 내에서 구현하기로함)
뭐라는지 잘 모르겠음 ,,,,,,,,,,,,,,,,,,,, 복습하자
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)
Python
복사
profileapp/views.py
{% 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 %}
HTML
복사
profileapp/profileapp/templates/creat.html
from django.urls import path from profileapp.views import ProfileCreateView app_name = 'profileapp' urlpatterns = [ path('create/', ProfileCreateView.as_view(), name='create'), ]
Python
복사
profileapp/urls..py
{% extends 'base.html' %} {% 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: 'NanumSquareB'"> {{ target_user.profile.nickname }} </h2> {% else %} <a href="{% url 'profileapp:create' %}"> <h2 style="font-family: 'NanumSquareB'"> Create Profile </h2> </a> {% endif %} {% if target_user == user %} <a href="{% url 'accountapp:update' pk=user.pk %}"> <p> Change Info </p> </a> <a href="{% url 'accountapp:delete' pk=user.pk %}"> <p> Quit </p> </a> {% endif %} </div> </div> {% endblock %}
HTML
복사
accountapp/accountapp/detail.html
from django.contrib.auth.models import User from django.db import models # Create your models here. 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=20, unique=True,null=True) message = models.CharField(max_length=100, null=True)
Python
복사
profileapp/models.py
from django.forms import ModelForm from profileapp.models import Profile class ProfileCreationForm(ModelForm): class Meta: model = Profile fields = ['image', 'nickname', 'message']
Python
복사
profileapp/forms.py