본문 바로가기

Develop60

6. 사진게시물 작성기능 .with (csrf_token(보안)) 1. 템플릿 photo/templates/photo/photo_post.html 작성 Photo App 홈으로 돌아가기 New Photo {% csrf_token %} {{ form.as_p }} 완료! 설명 : 폼은 사용자가 데이터를 입력하여 서버로 보내도록 도와주는 양식이다. 사용자는 이 양식을 채워서 POST 방식으로 요청을 보내면 서버에서는 해당 요청을 받아 처리하게 된다. ※ csrf_token이란, 보안 취약점을 방지하기 위한 보안 토큰이다. 사용자의 세션에 있는 토큰과 요청으로 들어온 토큰이 일치하는지 확이낳여 해당 취약점을 방지할 수 있다. 즉, post요청의 보안을 지켜주는 도구라고 이해하자. ※ form.as_p는 우리가 만들 form을 태그형식으로 만들어 주겠다는 것. 2. forms.. 2023. 9. 17.
5. 에러 데이터 처리 / 상세페이지 만들기 1.에러데이터 처리 뷰를 다음과 같이 고친다. from django.shortcuts import render, get_object_or_404 from .models import Photo # Create your views here. def photo_list(request): photos = Photo.objects.all() return render(request, 'photo/photo_list.html', {'photos': photos}) def photo_detail(request, pk): photo = get_object_or_404(Photo, pk=pk) return render(request, 'photo/photo_detail.html', {'photo': photo}) 새로 나.. 2023. 9. 15.
4. ORM(Object Relation Mapping) 기존의 html을 데이터 전환 방식으로 변경( 템플릿 태그를 이용하여 데이터를 뷰로부터 받을 수 있음 ) Photo App 사진 목록 페이지 {% for photo in photos %} {{photo.title}}" {{ photo.author }}, {{ photo.price }}원 {% endfor %} view( 데이터 가져오는 ..) 도 적절하게 변경 from django.shortcuts import render from .models import Photo # Create your views here. def photo_list(request): photos = Photo.objects.all() return render(request, 'photo/photo_list.html', {'pho.. 2023. 9. 15.
3. Django Template / View Django에서 템플릿은 사용자에게 보이는 부분을 의미한다. Django만의 장점은 템플릿 태그(Template tag)를 제공한다는 점이다. 템플릿 태그는 아주 편하게도 파이썬으로부터 바로 데이터를 넘겨받아 정적인 html을 동적으로 전환시키는데 주요한 역할을 한다. 1. 사진 목록 화면 만들기 1-1) 템플릿 만들기 앱마다 템플릿을 정의할 것이기 때문에 photo 폴더 내에 templates라는 폴더를 만들면 된다. → 나중에 템플릿 파일을 불러 올 때 'my_template.html'과 같은 이름으로 불러오게 된다. photo 안에 templates라는 폴더를 만들고 그 안에 photo파일을 만든 후, photo_list.html을 생성 다음과 같은 기본적인 코드를 작성한다. Photo App 마이.. 2023. 9. 14.
Zoom. 기능 추가사항 ( +오류 해결 ) 2023.9.10 수정사항) 방 입장 / 퇴장메시지 전달하기. 문제 : 방을 입장할때는 입장했다는 메시지가 출력되는데, 나갈때는 퇴장 메시지 전달 x 원인1) : 브라우저1 /브라우저 2 로 접속했을 때, 브라우저2가 나갈 때, 나갔다는 메시지를 브라우저1에게 전달해야함. 하지만 브라우저 2가 나가면 브라우저 2가 해당되어있던 socket자체가 소멸되어 누가 나갔는지 disconnect메서드에 올바른 파라미터(인자)값을 전달할 수 없음. 원인2) : 브라우저2가 꺼지면, 저장되어있던 roomName의 값도 소실되어 어느방으로 부터 나갔는지 disconnect메서드에 올바른 인자값을 전달할 수 없음. 원인1 해결방법) socket.to로 emit(강제함수실행) 메서드를 보내지 않고 wsServer자체에 값.. 2023. 9. 11.
Zoom 만들기 15. 모바일에서 사용하기 1. 모바일에서도 사용할 수 있게 하기. 1-1) local tunnel 사용하기 localtunnel은 서버를 전 세계와 공유할 수 있게 해준다. localhost:3000에서만 되던 것을 누구나 접근해서 볼 수 있도록 URL을 생성해 주기 때문이다. 더보기 npm i -g localtunnel local tunnel을 다음과 같은 명령어로 다운받으면 LT명령어를 사용할 수 있다. 터미널에 'lt'를 입력하면 사용법을 확인할 수 있다. 1-2) 포트 공유하기 터미널에서 'npm run dev'로 서버를 실행시키고 'lt --port 3000' 이라는 명령어를 실행하면 특정 url을 제공해준다. 저 링크로 들어가면 모바일로도 마치 내 localhost:3000 ip로 들어간것과 같게 처리된다. 1-3) .. 2023. 9. 9.
반응형