2017-10-05 4 views
0

거의 완료되었으므로 숙제가 있습니다. 그러나 다른 템플릿으로 리디렉션하는 데 약간의 문제가 있습니다. 간단한 환영으로 사용자를 환영하고 제출 후 제출 된 사용자 이름을 환영합니다. 누군가가 한 표정을 지으며 내가 뭘 잘못하고 있다고 말할 수 있습니까?리디렉션은 사용자 등록 페이지를 만들기 위해 Python과 Flask를 사용하지 않습니다.

from flask import Flask, request, redirect, render_template 
import cgi 
import os 
import jinja2 
import re 

template_dir = os.path.join(os.path.dirname(__file__), 'templates') 
jinja_env = jinja2.Environment(loader = jinja2.FileSystemLoader(template_dir), autoescape=True) 

app = Flask(__name__) 
app.config['DEBUG'] = True 

@app.route("/") 
def index(): 
    template = jinja_env.get_template('index.html') 
    return template.render() 

@app.route("/validate-signup", methods = ['POST']) 
def validate_signup(): 
    username = request.form['username'] 
    password = request.form['password'] 
    verifypword = request.form['verifypword'] 
    email = request.form['email'] 

    user_error = "" 
    pass_error = "" 
    verifypass_error = "" 
    email_error = ""  

    if not username.isalpha(): 
     user_error = "Please enter User Name" 
     username = "" 
    elif not re.match("^[a-zA-Z]{3,7}$", username): 
     user_error = "Must be between 3 and 25 characters" 
     username = "" 
    else: 
     username = request.form['username'] 

    if not password.isalpha(): 
     pass_error = "Please enter Password" 
     password = "" 
    else: 
     password = request.form['password'] 

    if not verifypword.isalpha(): 
     verifypass_error = "Please enter password" 
     verifypword = "" 

    elif verifypword != password: 
     verifypass_error = "Passwords do not match" 

    else: 
     verifypword = request.form['verifypass'] 

    if not re.match("[^@][email protected][^@]+\.[^@]+", email): 
     email_error = "Email must contain @ and ." 

    else: 
     email = request.form['email'] 

    if not pass_error and not user_error and not verifypass_error: 
     return redirect('/welcome'.format(username)) 
    else: 
     template = jinja_env.get_template('index.html') 
     return template.render(user_error = user_error, 
           pass_error = pass_error, 
           verifypass_error = verifypass_error, 
           email_error = email_error, 
           username = username, 
           email = email) 


@app.route('/welcome', methods = ['POST']) 
def welcome(): 
    template = jinja_env.get_template('welcome.html') 
    return template.render 


app.run() 
+0

당신은 당신의 "작은 문제"실제로 무엇을 말했다하지 않았습니다. –

+1

문제를 점 – TheTechGuy

+0

에 설명해주십시오. 문제점을 가능한 자세히 설명해주십시오. [검토 중] (https://stackoverflow.com/review/first-posts/17536445) – LW001

답변

1

이 경우에는 을 사용하는 것이 좋습니다. 문제가 무엇인지 알기는 어렵지만 사용자가 등록 양식을 사용하여 비밀번호를 제출 한 경우 환영 리디렉션을 반환하는 다음 작업 코드를 사용할 수 있기를 바랍니다.

from flask import Flask, request, redirect, render_template 
import cgi 
import os 
import jinja2 
import re 
from wtforms import Form, BooleanField, StringField, PasswordField, validators 

class RegistrationForm(Form): 
    username = StringField('Username', [validators.Length(min=4, max=25)]) 
    email = StringField('Email Address', [validators.Length(min=6, max=35)]) 
    password = PasswordField('New Password', [ 
     validators.DataRequired(), 
     validators.EqualTo('confirm', message='Passwords must match') 
    ]) 
    confirm = PasswordField('Repeat Password') 

template_dir = os.path.join(os.path.dirname(__file__), 'templates') 
jinja_env = jinja2.Environment(loader = jinja2.FileSystemLoader(template_dir), autoescape=True) 

app = Flask(__name__) 
app.config['DEBUG'] = True 

@app.route("/") 
def index(): 
    template = jinja_env.get_template('index.html') 
    return template.render(form=RegistrationForm()) 


@app.route("/validate-signup", methods = ['POST']) 
def validate_signup(): 
    username = request.form['username'] 
    password = request.form['password'] 
    pass_error = None 
    if not password.isalpha(): 
     pass_error = "Please enter Password" 
    template = jinja_env.get_template('index.html') 

    if not pass_error: 
     return redirect('/welcome') 
    else: 
     return template.render(username=username, form=RegistrationForm()) 


@app.route('/welcome') 
def welcome(): 
    template = jinja_env.get_template('welcome.html') 
    return template.render() 


app.run() 

템플릿/index.html을

<!DOCTYPE html> 
<html lang="en"> 
<head> 
    <meta charset="UTF-8"> 
    <title>Title</title> 
</head> 
<body> 
<form method="POST" action="/validate-signup"> 
    {{ form.username.label }} {{ form.username }} 
    {{ form.password.label }} {{ form.password }} 
    <input type="submit" value="Submit to me"> 
</form> 
</body> 
</html> 

템플릿/welcome.html 페이지

<!DOCTYPE html> 
<html lang="en"> 
<head> 
    <meta charset="UTF-8"> 
    <title>Title</title> 
</head> 
<body> 
WELCOME 
</body> 
</html>