0927 TIL

looggi·2022년 9월 28일
1

스파르타 내배캠 AI-3

목록 보기
24/130
post-thumbnail

🌞 쪽지시험


🦊 장고기초 4주차

🌵 MANY TO MANY(MY PIZZA TO MY TOPPINGS)

: 서로 참조하는 기능이 있어서
다중으로 불러올 수 있는 장점

  • django-admin startapp 앱이름
  • settings.py에 앱 등록
  • models.py에서 모델 설정
  • 데이터베이스에 반영(makemigrations/migrate)
  • 데이터베이스 생성 확인
  • 장고랑 모델을 합쳐준 이후라 supercreator가 없음
    -> python3 manage.py createsuperuser

IntegrityError at /admin/restaurant/mytopping/add/
FOREIGN KEY constraint failed
admin 페이지에 db관련 오류-> db삭제

  • 각 앱 안에 migrations 폴더에 있는 파일 삭제(init제외)
  • makemigrations,migrate,superuser다시 실행 -> 다시 모두 생성됨
  • db다시 생성

🌵 Django Shell

from restaurant.models import MyTopping, MyPizza

  • MyTopping.objects.all()
    -> 쿼리셋(모든 토핑종류 출력)
  • MyTopping.objects.get(topping_name='pepperoni)
    ->(topping_name: 모델명) 토핑이름이 페퍼로니인 토핑이 나옴
  • MyTopping.objects.get(topping_name='pepperoni).mypizza_set.all()
    ->토핑이 페퍼로니인 모든 피자 출력

🦊 장고기초 5주차

  • 사용자가 회원가입/로그인시 입력해야하는 값이 잘못되었을 때 무작정 다시 페이지를 랜더하지 않고 사용자가 해결할 수 있도록 원인을 같이 띄워준다

  • user/views.py

 username = request.POST.get('username', None)

-> username이 없으면 공백이 입력돼서 에러가 나야하는데 대신 None값이 들어가서 빈칸으로도 회원가입이 가능함
-> none 대신 빈 문자열 ''로 수정

if password != password2:
# 패스워드가 다르다는 에러가 필요합니다. {'error':'에러문구'} 를 만들어서 전달합니다.
     return render(request, 'user/signup.html', {'error': '패스워드를 확인 해 주세요!'})
else:
    if username == '' or password == '':
    # 사용자 저장을 위한 username과 password가 필수라는 것을 얘기 해 줍니다.
    	return render(request, 'user/signup.html', {'error': '사용자 이름과 패스워드는 필수 값 입니다'})

-> 오류가 나는 부분에 에러메세지 띄우기 -> render() 함수의 가장 마지막에 {'error':'에러메시지'} 로 html에 데이터를 전달(페이지에 표시)

  • templates/signup.html
{% if error %}
    <div class="alert alert-danger" role="alert">
        {{ error }}
    </div>
{% endif %}

-> render함수에서 html을 출력 할 때, 'error' 데이터를 같이 넘겨 주었는가? 에 대한 조건

  • user/views.py에서 signin함수 & signin.html 에서도 마찬가지
  • 빈글쓰기 방지 tweet/view.py
profile
looooggi

0개의 댓글