묻고 답해요
141만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
미해결
새창으로 form submit() 할 때 csrf 토큰문제 질문드려요
<body> <form:form id="gotoPopupPreview" name="gotoPopupPreview" method="post" action=""> <input type="hidden" name="isPreview" value="Y"> <input type="hidden" name="nttId" value="${searchVO.nttId}"> ...(생략) </form:form> <script> function openPreview(url, target, otherData){ var f = $("#gotoPopupPreview"); f.attr('action', url); f.attr('target', target); ...(생략) window.open('', target); f.submit(); } $("submitBtn").click(function(){ var otherData = '어쩌구저쩌구'; openPreview("http://www.test.or.kr/", '테스트', otherData); }); </script> </body>위 코드와 같이 form 태그를 만들어두고 스크립트에서 새 창을 열어 submit을 보냈습니다.근데 서버에서 AccessDeniedException : org.springframework.security.web.csrf.MissingCsrfTokenException: Could not verify the provided CSRF token because your session was not found.result :::: {"result" : "fail", "message" : "Could not verify the provided CSRF token because your session was not found."}이렇게 csrf 토큰이 없다고 뜨네요..처음엔 <input type="hidden" name="$csrf.parameterName}" value="${csrf.token}" /> 이렇게 form태그 안에 직접 넣었다가 form taglib을 쓰면 자동으로 토큰을 넣어준다길래 위와 같이 바꾼건데요, 두 경우 모두 토큰이 잘 들어있는 것으로 보이는데 왜 저런 exception이 뜨는 지 모르겠습니다ㅠ아무래도 새 창으로 띄우는 게 문제일까요? 이 경우에는 토큰을 어떻게 넣어줘야 할까요? T.T
-
해결됨파이썬/장고 웹서비스 개발 완벽 가이드 with 리액트
폼 작성 패턴 질문
안녕하세요 강사님. 폼 작성 패턴에 관해서 질문드리고자 합니다. 한 API에서 여러개의 모델과 인터렉션해서 저장하고자 할 때, 하나의 폼으로 처리하는 경우가 있을수도 있을거같은데요. 폼 하나에서 여러 모델에 대한 필드를 검사하는 경우도 흔히 사용하는 패턴인지 궁금합니다. (ex. Form -> Model1, Model2, Model3 ) 만약 이러한 패턴도 필요에 따라 사용하는것이 괜찮다고 한다면 폼의 유효성 검사 이후에 뷰에서 여러 모델 클래스들을 선언해서 저장한다면 코드가 매우 복잡해질 것 같다고 생각했습니다. 개인적으로 강사님게서 샘플코드로 작성해 주신 폼 내의 save()메서드 내에서 이를 진행하는게 좋아보인다고 생각했습니다. 하지만 프로덕션 레벨에 사용할만한 코드가 아니라고 강조를 해주셔서 무언가 도돌이표처럼 고민이 되네요. 질문을 정리해보자면 1. 애초에 일반 폼 하나에서 여러 모델의 필드를 유효성 검사하는것이 좋지 않은 패턴인지. (폼과 모델은 1:1 대응이 되어야 하는지?) 2. 일반 폼 하나에서 여러 모델의 필드를 유효성 검사 후 save()함수를 구현해서 여러 모델과의 인터렉션을 하는것도 괜찮은 방법인지? 답변 주시면 감사하겠습니다. 좋은 강의 감사합니다.
-
미해결파이썬/장고 웹서비스 개발 완벽 가이드 with 리액트
안녕하세요 선생님 foreign key form updateview구현에 대해서 질문드릴게 잇습니다!!
안녕하세요 선생님 !!! 스승님~~ 정말 명품강의에 대해서 다시 한번 감사드립니다. 제가 선생님 강의 코드를 쪼금 변형해서 현 회사에서 사용하고자 하는 코드로 만들려고하는데 ,,, 제가 원하는 구현은 장고 form에 이미지 input을 받는데 한개의 이미지가 아닌 여러개의 이미지를 django form으로 받으려합니다. 이미지를 여러개 저장하는것은 했지만 이것을 업데이트 하는 장고 form, view, model??, template를 만드는데 어려움이 있습니다. 먼저 Post모델로는 (강의 꺼를 쪼금 그대로 사용했습니다.) 그 다음 1:N -> POST1개에 여러 이미지를 넣기 위하여~ 이런식으로 모델을 만들었습니다. 다음으로는 장고 Form으로는 위와 같이 만들어서 fields['pictures']를 만들어 저 위젯을 이용해서 여러 이미지를 받으려고 만들었습니다. 다음은 view로써 위 view역시 강의에서 만든 코드를 토대로 이미지만 여러개 받을 수있는 코드를 추가해서 만들었습니다. 템플릿은 그대로 {% bootstrap_form form%}으로 나타내었고 위와 같이 pictures란 필드에 여러 이미지를 담아서 보낼 수 있습니다. (그리고 저장하면 저장되서 템플렛에 보여줄 수 있고요 ) 다만 제가 updateview를 구현할 방법을 전혀 모르겠어서(구글링을 아무리 해도 모르겠네요 ㅠㅠㅠ ) 모델을 건들어야할지, 뷰를 건들어야할지, 폼을 건들어야할지 잘 모르겠어서 선생님께 질문드립니다. 즉 updateview를 만들어서 수정버튼을 클릭하면 기존에 선택된 이미지가 뜨도록 만들고 싶은데 어떻게 구현을 해야 할까요?? 처음 파일을 생성헸을 댸 파일을 6개 선택했다면 -> 수정버튼을 누르면 기존에 저장한 파일 6개 가 표기되어있고 다시 파일 선택눌러서 다시 다른 이미지들을 선택하거나 선택하지 않고 다시 저장할 수 있도록 만드는게 목표입니다. 위는 저장 됬을 때 모습입니다. 사진은 저장된 개수만큼 아래로 표시 되게 만들었습니다. 다시 설계를 해야 할지 뷰 or 모델 or 폼을 건들어야할지 잘모르겠습니다 (장고를 공부한지 얼마되지 않아서 많이 어렵네요 ㅠㅠ) 아 그리고 업데이트 할 때에도 사진수를 10개로 제한을 걸어서 만들고싶습니다!!!! 혹시 이해가 안되시거나 부족한 설명이 있으면 말씀해주시면 바로 추가해서 넣도록하겠습니다. 감사합니다!!
-
해결됨모든 개발자를 위한 HTTP 웹 기본 지식
HTML FORM 사용에서 회원 등록 부분에 대한 질문입니다.
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://docs.google.com/document/d/1j0jcJ9EoXMGzwAA2H0b9TOvRtpwlxI5Dtn3sRtuXQas/edit#heading=h.w2tomwsznga7)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://docs.google.com/document/d/1xCQKit-1V6l6ObeCe49St33RHPzLF_P_c3o7aSDTKs0/edit#heading=h.7dhnp46ven0v)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]여기에 질문 내용을 남겨주세요. [HTTP API 설계 예시] 강의의 16분 30초 내용에 대한 질문입니다. 회원 등록폼을 불러오는 URI가 /members/new 폼 작성후 submit 하는 URI도 /members/new 로 통일시켜주는 것을 선호한다고 하셨는데 만약 스프링을 사용한다고 가정했을때 클라이언트에서 폼을 작성하고 submit 했을 경우 컨트롤러에서 동일하게 /members/new 로 넘어온다면 회원등록을 해주는식으로 로직을 짠다면 폼을 불러오는 URI와 겹쳐서 생기는 오류는 없나요? 혹은 폼 작성하고 submit 할때 /members/register 로 새로운 URI를 생성해서 넘기는 방법은 사용해도 될까요??
-
미해결스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술
등록/수정 Form 페이지 분리 관련 질문 드립니다.
안녕하세요 ! 등록/수정 Form 페이지 분리 관련 질문 드립니다. 실무에서는 유지보수를 효율적으로 하기 위해 등록/수정 Form 을 같은 페이지에서 사용하고 id 의 유무로 등록 건인지 수정 건인지 구분하고 있습니다. 관련하여 현재 강의에서는 등록 Form 과 수정 Form 페이지를 분리하여 사용하고 있는데, 등록/수정 Form 을 분리하여 사용할 경우의 장점을 알고 싶습니다. 단점으로는 Form 수정 시 등록 페이지와 수정 페이지를 모두 수정하고 비교해보아야 하는 번거로움이 있을 것 같습니다. 감사합니다 !!
-
미해결파이썬 플라스크(Flask) 기반 웹 개발 및 업무 자동화 서비스 활용
form.files.data 문의
5분 35초 내용입니다. f = form.files.data 라는 코드가있던데요 이전에는 f=form.files['file'] 이렇게 값을 가져왔었는데 둘다 맞는건가요? 아니면 이번에는 data를 쓴 이유가 따로있나요?
-
해결됨모든 개발자를 위한 HTTP 웹 기본 지식
Http form data 전송에 관하여 질문이있습니다!
안녕하세요 김영한선생님의 스프링강의와 이번http강의까지 잘들으면 일본에서 밥벌어먹고 사는 이재화라고합니다. 알찬강의에 늘 감사하고있습니다 이번에 제가 맡은 기능개발중에 x-wwwformurlencoded형식으로 되어있는 상대편api에 리퀘스트를 하는곳이있는데요 전송할 전문이 Post메소드를 이용해서 post param에 기타 여러항목들과 최대10메가의 csv데이터를 함께 보내야하는데 이 경우는 content-type을 form multipart로 안하고 x-wwwformurlencoded로 보내는 게 가능한가요? 저는 spring webclient body에 multivaluemap를 생성해서 다른파라메터랑 똑같이 csv를 바이트에서 스트링으로 변환시켜서 맵에 저장하고 맵을 파라메터로 넘겨주면 될까 생각했는데요 이렇게해도 되는걸까요? 구글링해도 이런방식에대한 정보가 별로 없어서 질문드려봅니다
-
미해결윤재성의 만들면서 배우는 Spring MVC 5
[공유] 스프링 form, spring 태그 500 오류
질문게시판을 보니 6달 전에도 저와 같은 문제를 겪으신 분이 있었네요. 제가 겪은 오류는 taglib prefix="form"과 taglib prefix="spring" 사용 시 500 오류가 발생하는 것이었습니다. 인터넷을 일주일을 검색하며 왠만한 여러가지 방법들은 전부 시도해본 것 같습니다. 그래도 해결이 안되었습니다. -------------오류 내용--------------------------- 절대 URI인 [http://www.springframework.org/tags/form]을(를), web.xml 또는 이 애플리케이션과 함께 배치된 JAR 파일 내에서 찾을 수 없습니다. 절대 URI인 [http://www.springframework.org/tags]을(를), web.xml 또는 이 애플리케이션과 함께 배치된 JAR 파일 내에서 찾을 수 없습니다. --------------------------------------------------------------- 보고 또 보았던 오류메세지를 보던 중 문득 'Maven dependencies엔 필요한 jar 파일들이 다 다운로드가 된 것 같은데..., 다 있는데 왜 못 찾는다는 걸까' 하는 생각이 들어 WEB-INF 폴더 하위 lib 폴더 안에 spring webmvc jar 파일을 직접 넣었습니다. 또는 tomcat이 설치된 경로의 lib에 spring webmvc jar 파일을 넣으면 WEB-INF/lib 에 넣지 않아도 잘 실행이 됩니다. 저같은 경우는 이 방법으로 오류가 해결되었습니다. 아직도 이전에 오류가 왜 발생했는지 모르겠고 이렇게 하니까 왜 되는지 모르지만 같은 오류로 고생하시는 분이 있을까 하여 공유드립니다.
-
미해결윤재성의 만들면서 배우는 Spring MVC 5
이전에 질문드린 16강 form태그 오류 관련 소스코드입니다.
안녕하세요. 이전 16강 질문에 주신 답변 잘 확인하였습니다. 오류가 지속되어 다시 문의드리고자 하는데요, ------------------- 오류 내용: 절대 URI인 [http://www.springframework.org/tags/form]을(를), web.xml 또는 이 애플리케이션과 함께 배치된 JAR 파일 내에서 찾을 수 없습니다. ------------------------------ 답변 주신 부분 확인 후 .m2 파일을 지우고 이클립스 실행을 여러 번 해보았지만 오류가 해결되지 않습니다. 지금까지 인터넷을 검색해서 시도해 본 것은 WEB/INF 하위 lib 폴더에 직접 jstl.jar 파일을 추가, classpath 확인, 톰캣 폴더 내 lib 안에 jstl.jar 추가, catalina.properties 파일을 확인, taglib dependecy 추가, spring-webmvc dependecy 삭제 후 다시 붙여넣기 제가 작성한 프로젝트가 아닌 수업자료의 소스코드 임포트하여 실행, 모두 같은 오류가 지속됩니다. 인터넷을 검색해도 무엇이 문제인지 잘 모르겠습니다. 톰캣을 삭제하고 다시 깔라는 글도 보았는데, 일단 이전에 톰캣 8.5 설치 후 9로 재설치하고자, 완전 삭제(?) 키워드로 검색하여 인터넷을 참고하여 삭제했지만 삭제가 잘 안 된 상태에서 9를 깔았었는데.. 톰캣이 문제인지, 아니면 혹시 발견 못한 소스 상 문제가 있는지.. 시간을 많이 써도 해결을 못해 코드 첨부합니다. ----------------------------------------------< pom.xml > ------------------------------------------------------- <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <groupId>11_FormCustomTag</groupId> <artifactId>11_FormCustomTag</artifactId> <version>0.0.1-SNAPSHOT</version> <packaging>war</packaging> <build> <sourceDirectory>src</sourceDirectory> <plugins> <plugin> <artifactId>maven-compiler-plugin</artifactId> <version>3.8.1</version> <configuration> <release>14</release> </configuration> </plugin> <plugin> <artifactId>maven-war-plugin</artifactId> <version>3.2.3</version> <configuration> <warSourceDirectory>WebContent</warSourceDirectory> </configuration> </plugin> </plugins> </build> <!-- 라이브러리 버전 관리 --> <properties> <!-- servlet --> <javax.servlet-version>4.0.1</javax.servlet-version> <!-- jsp --> <javax.servlet.jsp-version>2.3.3</javax.servlet.jsp-version> <!-- jstl --> <javax.servlet.jsp.jstl-version>1.2</javax.servlet.jsp.jstl-version> <!-- spring web mvc --> <org.springframework-version>5.3.4</org.springframework-version> <!-- <org.springframework-version>4.3.30.RELEASE</org.springframework-version> --> </properties> <!-- 라이브러리 세팅 부분 --> <dependencies> <!-- servlet (공통세팅) --> <!-- https://mvnrepository.com/artifact/javax.servlet/javax.servlet-api --> <dependency> <groupId>javax.servlet</groupId> <artifactId>javax.servlet-api</artifactId> <version>${javax.servlet-version}</version> <scope>provided</scope> </dependency> <!-- jsp (공통세팅) --> <!-- https://mvnrepository.com/artifact/javax.servlet.jsp/javax.servlet.jsp-api --> <dependency> <groupId>javax.servlet.jsp</groupId> <artifactId>javax.servlet.jsp-api</artifactId> <version>${javax.servlet.jsp-version}</version> <scope>provided</scope> </dependency> <!-- jstl (공통세팅) --> <!-- https://mvnrepository.com/artifact/javax.servlet/jstl --> <dependency> <groupId>javax.servlet</groupId> <artifactId>jstl</artifactId> <version>${javax.servlet.jsp.jstl-version}</version> </dependency> <!-- spring web mvc (공통세팅) --> <!-- https://mvnrepository.com/artifact/org.springframework/spring-webmvc --> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-webmvc</artifactId> <version>${org.springframework-version}</version> </dependency> </dependencies> </project> -----------------------------------------------------------------------< test2.jsp>-------------------------------- <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <%@ taglib prefix="form" uri="http://www.springframework.org/tags/form" %> <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>Insert title here</title> </head> <body> <h1>test2</h1> <!-- 사용할 프로퍼티들이 들어있는 빈을 지정 --> <form:form modelAttribute="userDataBean" action="result"> <!-- path에는 지정한 객체 안의 필드명 --> 이름 : <form:input path="user_name"/><br> 아이디 : <form:input path="user_id"/><br> 비밀번호 : <form:password path="user_pw" showPassword="true"/><br> <!-- 비밀번호도 보이게 하려면 showPassword="true" --> 우편번호 : <form:input path="user_postcode"/><br> 주소1 : <form:input path="user_address1"/><br> 주소2 : <form:input path="user_address2"/><br> <button type="submit">확인</button> </form:form> </body> </html>