장고:글쓰기
편집하기 (부분)
둘러보기로 이동
검색으로 이동
경고:
로그인하지 않았습니다. 편집을 하면 IP 주소가 공개되게 됩니다.
로그인
하거나
계정을 생성하면
편집자가 사용자 이름으로 기록되고, 다른 장점도 있습니다.
스팸 방지 검사입니다. 이것을 입력하지
마세요
!
==글 삭제(+에러메시지 띄우기)== {| class="wikitable" ! !일반적으로 코드를 짤 경우 !제네릭뷰(클래스형 뷰)를 쓰는 경우 |- |template작성 +JQuery | colspan="2" |위에서 만든 detail.html을 수정한다. 글 수정을 위한 링크를 추가. 글 수정과 동일하게, 편집자만 접근할 수 있게끔 if 태그 안에 넣어준다.<syntaxhighlight lang="html"> <a href="{% url '앱이름:delete' question.id%}" class="btn btn-primary">삭제</a> </syntaxhighlight>제네릭 뷰를 쓰는 경우, 넘겨주는 변수에 <code>pk=question.id</code> 형태로 넣어주어야 한다. 이번엔 특수한 기능을 위해 JQuery도 함께 작성한다. 에러 메시지를 띄우기 위한 확인창을 구현하기 위해서. 기존의 작성법과 조금 다르다. 다음과 같이 수정해주자.<syntaxhighlight lang="html"> <a href="#" data-uri="{% url '앱이름:delete' question.id %}" class="delete">삭제</a> <!-- data-uri 속성은 jQuery에서 $(this).data('uri') 형태로 받아가기 위해서 작성--> <script type='text/javascript'> $(document).ready(function(){ $(".delete").on('click', function() { //delete를 포함하는 클래스가 있으면 작동한다. if(confirm("님, 정말로 지움??")) { location.href = $(this).data('uri'); } }); }); </script> <!-- 취소를 누르면 아무 일도 하지 않는다.--> </syntaxhighlight>JQuery가 포함되어있지 않으면 사용할 수 없다. |- |view 작성 |<syntaxhighlight lang="python"> from .models import Question #모델을 불러온다. @login_required(login_url='membership:login') def delete(request, question_id): question = get_object_or_404(Question, pk=question_id) if request.user != question.author: messages.error(request, '삭제권한이 없습니다') return redirect('앱이름:detail', question_id=question.id) question.delete() return redirect('앱이름:index') </syntaxhighlight> |<syntaxhighlight lang="python"> from django.views import generic from django.urls import reverse_lazy class create(generic.DeleteView): model = Question success_url=reverse_lazy('앱이름:list')#작성에 성공한 경우 보낼 탬플릿. template_name_suffix='_delete' #사용하는 탬플릿 명을 '모델명_delete.html'로 바꾼다는 의미. 접미사만 바꾼다. #기본 탬플릿은 '모델명_confirm_delete.html'로 나타난다. </syntaxhighlight> |- |template작성 |글 삭제 확인페이지.(JQuery를 이용한 경우엔 해당사항 없음.) 글 작성에서 사용한 탬플릿에서 버튼 이름만 바꾼다. (post요청을 통해 들어온 경우에만 삭제하게끔 view 변형 필요.)<syntaxhighlight lang="html"> {% extends '연장할탬플릿.html' %} {% block content %} <form method="post"> {% csrf_token %} {{ form.as_p }} <input type="submit" value='나타낼 텍스트'> </form> {% endblock %} </syntaxhighlight> |글 삭제 확인페이지로 이동한다.(JQuery를 이용한 경우엔 해당사항 없음.)<syntaxhighlight lang="html"> {% extends '연장할탬플릿.html' %} {% block content%} <form action="" method='post'> {% csrf_token %} <div class="alert alert-danget">나타낼텍스트 {{나타낼변수}} 자유롭게 사용.</div> <input type="submit" value="Delete" class="btn btn-danget" </form> {% endblock %} </syntaxhighlight> |}
요약:
학교의 모든 지식. SMwiki에서의 모든 기여는 크리에이티브 커먼즈 저작자표시-비영리-동일조건변경허락 라이선스로 배포된다는 점을 유의해 주세요(자세한 내용에 대해서는
학교의 모든 지식. SMwiki:저작권
문서를 읽어주세요). 만약 여기에 동의하지 않는다면 문서를 저장하지 말아 주세요.
또한, 직접 작성했거나 퍼블릭 도메인과 같은 자유 문서에서 가져왔다는 것을 보증해야 합니다.
저작권이 있는 내용을 허가 없이 저장하지 마세요!
취소
편집 도움말
(새 창에서 열림)
둘러보기 메뉴
개인 도구
로그인하지 않음
토론
기여
로그인
이름공간
문서
토론
한국어
보기
읽기
편집
원본 편집
역사 보기
더 보기
검색
둘러보기
대문
최근 바뀜
임의의 문서로
미디어위키 도움말
도구
여기를 가리키는 문서
가리키는 글의 최근 바뀜
특수 문서 목록
문서 정보