views.py
에서는 alert를 띄울 수 없다.
Alert함수는 자바스크립트 함수인데 views.py
는 python문법만 적용 가능
views.py
에서 alert에 상응하는 Python으로 처리를 하고 싶다!
백엔드 코드 : 서버가 실행한다.
프론트엔드 코드 : 클라이언트(Web브라우저)가 실행한다.
Django의 템플릿 언어는 백엔드 프로그램이기 때문에 백엔드 코드 언어이다.
웹브라우저는 서버가 전달한걸 받은 다음에 해석 및 실행하는 것이다.
alert()같은 자바스크립트 언어는 프론트에서 쓰고 있고 코드를 받은 다음에 해석을 하기 시작한다. 따라서, 이미 서버는 자기가 할 거 다 한 다음에 모든 계산을 다 한 다음에 웹브라우저에 이렇게 변환한 결과를 넘겨버린다.
alert()는 자바스크립트 문법이고 실제로도 웹브라우저에 무언가 경고창을 띄우기 위한 용도이다. → 그런데, 자바스크립트는 프론트엔드잖아! 그리고 웹브라우저가 경고창을 띄운다는 거는 이미 웹브라우저 입장에서는 서버가 다 실행을 완료한 코드를 받은거잖아! → 그러면 서버 이후에나 실행될 무언가를 하고 싶기 때문에 alert를 쓰는거잖아. 그런데 views.py에서는 서버 단계에서 할 작업들이자나. 따라서 안된다.
회원가입할 때 중복된 회원이 존재할때 다시 처음으로 돌아가게 하고 싶다면,
alert( { { err } } );
그럼 저 signup.html
파일이 {% ... %}
없을땐 '클라이언트 코드'라고 불릴 수 있는 것이고 있으면 서버에서 먼저 수행하고 클라이언트로 전달해준다는 뜻이네요?
라디오버튼이 왜 안넘어가는가
Makemigrations
와 migrate
의 차이
makemigrations : DB 형상 관리에 대한 보고서를 작성한다.
migrate : 보고서 작성 내용을 그대로 실행시킴
DatetimeField가 안나온다면?
post로 데이터 저장은 성공했습니다만, get으로 db의 데이터를 불러오는게 안됩니다.
(= 브라우저에 값을 띄우는게 안됩니다.)
integrityError at / dontgiveup / registered not null constraint failed : member_user.useird
해결도중 위와 같은 에러가 나서
일단 models.py
에 null = true
를 넣어서 에러는 해결했고, admin 서버에 데이터는 들어가나, 브라우저에 값을 띄우는게 안되고 있습니다.
logged 화면에 {% for문 %}
을 입력안하면 웹브라우저에 출력이 안되니 꼭 써줄 것!
filter
는 조건에 대해 검색만 가능하다고 하는 것이지 조건을 필터링하는 것이 아니다.
검색 조건을 갖고 오겟다는 뜻 해당하는 데이터만 검색해서 변수에 저장하는 것이지 조건을 저장하는 것이 아님.
로그인을 한 사람은 한 사람밖에 없을것이다. 근데 그 한 사람을 위해서 for문을 돌리는 것이 타당한가? 안해도 되지 않나?
그 날 그 날 작업한 것을 하나의 코드에 대해서 누가 작업했는 지 기록하는 역할을 수행함
9월 1일에 프로그래밍을 했어, 근데 거기서 user라는 테이블을 쓰고 id,password 등을 구성했어,
9월 10일이 되었는데 중간에 주번 수집하지 말라고 법이 바뀌면 수집한 주번 정보를 날려야댐. 따라서 DB를 바꿔야함.
9월 15일이 되서 9월 1일의 DB를 다시 가져와야 함. 그럴 땐 소스를 이전 버전으로 돌리면 됨.
비밀번호 변경 :
UPDATE문 : 변경할 것을 변경한 후에 .save()
로 저장
get은 복수의 데이터에서 save나 delete는 사용할 수 없다.
object는 하나만 있어야 함
delete문이랑 save문은 앞에 있는 유저가 하나여야함
복수개가 들어가게 되면 오브젝트를 못 씀
delete()
를 써주면 된다.
# 회원 비밀번호 수정, 삭제
def login(req):
user = User.objects.get(username = '이상훈')
user.password = 'qwerty'
user.save()
user.delete() # save, delete 앞에 있는 user가 오브젝트여야함
return render(req, 'login.html')
pk
: primary key, 한글로는 기본키
기본키 : 하나의 레코드를 다른 레코드와 식별하게 해주기 위한 "고유값"
연속적인 숫자로 하는 것이 일반적
테이블을 설계할 때 기본키를 잡기 위한 행을 따로 둔다.
Django는 우리가 만들지 않아도 순번 같은 기본키를 알아서 생성해준다.
filter와 달리 get은 검색결과에 해당하는 하나의 객체만을 반환
views.py
# 비밀번호 변경 페이지
def chg_pw(req):
return render(req, 'chgpw.html')
# 비밀번호 변경 완료 페이지
def chged_pw(req):
change_passward = User.objects.get(password=req.POST.get('pw'))
print(req.POST.get('id'))
print(req.POST.get('pw'))
change_passward.password = req.POST.get('new_pw')
change_passward.save()
return render(req, 'chgedpw.html', {'info1': req.POST.get('id')})
# 회원 탈퇴 페이지
def mem_out(req):
return render(req, 'memout.html')
# 회원 탈퇴 완료 페이지
def mem_out_success(req):
delete_user = User.objects.get(userid=req.POST.get('del_id'), password=req.POST.get('del_pw'))
delete_user.delete()
print('회원탈퇴 완료')
return render(req, 'memout_success.html')
상훈이형 벨로그 2개에요?