inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

남박사의 파이썬으로 실전 웹사이트 만들기

회원 가입 페이지 만들기

join.html에서 회원 가입하면 not found로 넘어갑니다.

해결된 질문

732

위즈윅

작성한 질문수 1

1

회원가입페이지 만들기 부분에서 not found 오류가 납니다.

    {% with messages = get_flashed_messages() %}
        {% if messages %}
            <script>
                alert('{{messages[-1]}}');
            </script>
        {% endif %}
    {% endwith %}

    <div class="join_container">
        <form action="form" method="POST" action="/join">
            <div class="form_group">
                <label for="name">이름</label>
                <input type="text" name="name" id="name">
            </div>
            <div class="form_group">
                <label for="email">이메일</label>
                <input type="text" name="email" id="email">
            </div>
            <div class="form_group">
                <label for="pass">비밀번호</label>
                <input type="password" name="pass" id="pass">
            </div>
            <div class="form_group">
                <label for="pass2">비밀번호 확인</label>
                <input type="password" name="pass2" id="pass2">
            </div>
            <div class="form_group">
                <input type="submit" value="가입하기">
            </div>                          
        </form>
    </div>
@app.route('/join', methods=['GET', 'POST'])
def member_join():
    if request.method == 'POST':
        name = request.form.get('name', type=str)
        email = request.form.get('email', type=str)
        pass1 = request.form.get('pass', type=str)
        pass2 = request.form.get('pass2', type=str)

        if name == '' or email == '' or pass1 == '' or pass2 == '':
            flash('입력되지 않은 값이 있습니다.')
            return render_template('join.html')

        if pass1 != pass2:
            flash('비밀번호가 일치하지 않습니다.')
            return render_template('join.html')

        members = mongo.db.members
        cnt = members.find({'email': email}).count()
        if cnt > 0:
            flash('중복된 이메일 주소입니다.')
            return render_template('join.html')

        current_utc_time = round(datetime.utcnow().timestamp() * 1000)
        post = {
            'name': name,
            'email': email,
            'pass': pass1,
            'joindate': current_utc_time,
            'logintime': '',
            'logincount': 0,
        }

        members.insert_one(post)

        return ''
    else:
        return render_template('join.html')

python

답변 2

1

남박사

폼의 내용을 기입하고 submit 을 했는데 의도하지 않은 페이지로 연결이 되었다 했을때 어디서 문제가 생겼는지 이해하셔야 해결 할 수 있는 문제입니다.

해당 예제에서는 특별한 기능은 없고 "가입하기" 버튼을 누르면 해당 폼의 데이터를 submit 하는 단순한 내용인데 이때 해당 데이터를 어디로 submit 하는지에 문제가 발생한 것입니다. 오류 주소를 보면 /form 이라는 주소로 전송이 되며 해당 주소를 찾을 수 없다는 오류가 발생한것인데 그러면 여기서 "어디로"에 해당하는 부분이 폼에 기재된 action 값인데 올려주시는 코드를 보면

<form action="form" method="POST" action="/join">

이렇게 action 이 중복선언 되어있습니다. 이부분에서 문제가 생겼다는것을 알 수 있습니다.

0

위즈윅

문제 해결에 대해 어려움을 느끼고 있었는데, 어디에서 문제가 생겼고 어떻게 문제를 해결하는지 많은 도움이 되었습니다. 감사합니다. 

iis 접속후 자동으로 로그인 창이 나오도록 설정이 기능한가요?

0

64

2

리스트 이동 시 창 에러 발생

0

74

1

배포후 회원 등록 후 로그인 에러...

0

73

2

내부 서버 오류

0

67

2

app.config["MONGO_URI"] = "mongodb://localhost:27017/pm_db"

0

53

2

DB 검색하면 데이터가 없습니다. 라고 나와요. 5시간을 찾아봐도 모르겠어서 문의드려봅니다.

0

45

1

몽고db studio3T를 깔았는데

0

57

2

flake8과 linter

0

72

3

500이 뜹니다.

0

57

2

첨부파일 삭제

0

66

2

검색기능 질문

0

61

2

google.py

0

66

2

Studio 3T에 DB insert가 되지 않는 문제를 해결하지 못하고 있습니다 ㅠ

0

81

3

혹시 전체 코드 공개되어 있나요?

0

96

1

join.html 의 form 태그값 을 member_join() 에서 처리못함.

0

103

1

google.py 몽고db 샘플데이터 만들기

0

100

2

flake8 설치 이후 명령팔레트에서 linter가 안보입니다.

0

236

2

파이썬으로 만들어서 웹호스팅에 올릴경우

0

304

1

현재 구글검색 무한스크롤변경 문의합니다

0

296

1

몽고디비아틀라스로 추가 공부해서 올립니다.

0

217

1

IIS 500.19에러

0

658

2

버전 문제도 수정했는데 결과가 안나옵니다.

0

257

1

데이터베이스 저장관련 질문입니다.

0

269

1

test가 생기지 않습니다.

0

508

3