: 서로 참조하는 기능이 있어서
다중으로 불러올 수 있는 장점
IntegrityError at /admin/restaurant/mytopping/add/
FOREIGN KEY constraint failed
admin 페이지에 db관련 오류-> db삭제
- 각 앱 안에 migrations 폴더에 있는 파일 삭제(init제외)
- makemigrations,migrate,superuser다시 실행 -> 다시 모두 생성됨
- db다시 생성
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()
->토핑이 페퍼로니인 모든 피자 출력
사용자가 회원가입/로그인시 입력해야하는 값이 잘못되었을 때 무작정 다시 페이지를 랜더하지 않고 사용자가 해결할 수 있도록 원인을 같이 띄워준다
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에 데이터를 전달(페이지에 표시)
{% if error %}
<div class="alert alert-danger" role="alert">
{{ error }}
</div>
{% endif %}
-> render함수에서 html을 출력 할 때, 'error' 데이터를 같이 넘겨 주었는가? 에 대한 조건