원어민에게 a waterable cat 우기기용 그림
# user.models.py
from django.db import models
from django.contrib.auth.models import AbstractUser
# Create your models here.
class UserModel(AbstractUser):
# UserModel이란 클래스를 만들껀데, 장고에서 미리 만든 AbstractUser클래스의 기능들을 그대로 가져와서 적용하겠다.
class Meta:
db_table = "my_user" # 테이블 이름
bio = models.TextField(max_length=500, blank=True)
# 장고에서 제공하는 기본 User모델에서 bio기능을 추가해주겠다.
#settings.py
AUTH_USER_MODEL = 'user.UserModel'
# 장고에게 앞으로 기본인증과정을 user앱에 작성한 UserModel로 사용하겠다 라는 의미
python manage.py makemigrations
python manage.py migrate
#우리가 만든 Model을 데이터베이스에 추가하고 적용시키겠다.
# user/views.py
from django.contrib.auth import get_user_model #사용자가 있는지 검사하는 함수
def sign_up_view(request):
if request.method == 'GET':
return render(request, 'user/signup.html')
elif request.method == 'POST':
username = request.POST.get('username', None)
password = request.POST.get('password', None)
password2 = request.POST.get('password2', None)
bio = request.POST.get('bio', None)
if password != password2:
return render(request, 'user/signup.html')
else:
exist_user = get_user_model().objects.filter(username=username) # 사용자가 있는지 검사
if exist_user: #있으면
return render(request, 'user/signup.html') # 사용자가 존재하기 때문에 사용자를 저장하지 않고 회원가입 페이지를 다시 띄움
else:
UserModel.objects.create_user(username=username, password=password, bio=bio)
return redirect('/sign-in') # 회원가입이 완료되었으므로 로그인 페이지로 이동
id=comment
값을 가지고, submit
형태로 데이터를 보낸다./tweet/comment/{{ tweet.id }}
url 주소로 POST
요청을 보낸다.# tweet.urls.py
urlpatterns = [
path('', views.home, name='home'),
path('tweet/', views.tweet, name='tweet'),
path('tweet/delete/<int:id>', views.delete_tweet, name='delete-tweet'),
path('tweet/<int:id>',views.detail_tweet,name='detail-tweet'),
path('tweet/comment/<int:id>',views.write_comment, name='write-comment'),
# action='/tweet/comment{{ tweet.id }} 를 받는 url
path('tweet/comment/delete/<int:id>',views.delete_comment, name='delete-comment'),
]
submit
으로 받은 데이터를 action
과 일치하는 url로 받는다.views.write_comment
함수를 적용시킴@login_required
def write_comment(request, id):
if request.method == 'POST': # POST요청을 받을시
comment = request.POST.get('comment','') # html의 comment id로 보내진 데이터를 comment라고 선언
current_tweet = TweetModel.objects.get(id=id) # 요청받은 id와 일치하는 게시글을 current_tweet라고 선언
TC = TweetComment() # TC함수에 TweetComment 클래스 적용
TC.comment = comment # 위에서 선언한 comment함수를 TC.comment로
TC.author = request.user
TC.tweet = current_tweet
TC.save() # 저장
return redirect('/tweet/'+str(id)) # 해당 게시글로 이동
하루하루 새로운 것들을 빠른시간내에 배우다보니, 만족할만한 수준의 로직 이해도를 가지기 어려워서 아쉽다는 생각이 많이 들었다. 따로 로직부분에 대해서 중점적으로 공부하면서 자신감을 가질 수 있을 정도로 이해도를 가지기 위해서 공부할 필요성을 느꼈다.
우리팀 에이스 준헌님 화이팅입니다 👏👏👏👏👏