Flask шаблон не загружается - PullRequest
0 голосов
/ 26 марта 2020

Добрый вечер. Я пытаюсь не дать пользователю зайти на мой сайт с reCaptcha v3. Тем не менее, шаблон для этого не загружается, несмотря на то, что он вызывается:

from flask import url_for, render_template, redirect, request, render_template_string
from flask import current_app as app
from .forms import *
from .filewriter import *
from .mailserver import *
from .rcvalidator import *
from flask_jsglue import JSGlue

jsglue = JSGlue(app)

@app.route('/', methods=('GET', 'POST'))
def home():
    reqform = ReqForm()
    delform = DelForm()
    error = 0
    if request.method == "POST":
        gtoken = request.json['gtoken']
        if not rc_form_valid(gtoken):
            print("working")
            return redirect(url_for('inv')) #would prefer to have the loaded thing here but as a test tried to lad a different function
    return render_template('home.html',
                           reqform=reqform,
                           delform=delform,
                           csrf_token=0,
                           errors=error)


@app.route('/req', methods=('GET', 'POST'))
def req():
    reqform = ReqForm()
    delform = DelForm()
    if reqform.validate_on_submit():
        appendfile("req.csv", reqform)
        mail(reqform.name.data, reqform.tel.data, "recipient")
        return redirect(url_for('success'))
    elif request.method == "POST" and not reqform.validate():
        error = 1 
    else:
        error = 0
    return render_template('home.html',
                           reqform=reqform,
                           delform=delform,
                           csrf_token=reqform.csrf_token,
                           errors = error)


@app.route('/delv', methods=('GET', 'POST'))
def delv():
    reqform = ReqForm()
    delform = DelForm()
    if delform.validate_on_submit():
        appendfile("del.csv", delform)
        mail(delform.name.data, delform.tel.data, "delivery")
        return redirect(url_for('success'))
    elif request.method == "POST" and not delform.validate():
        error = 2
    else:
        error = 0
    return render_template('home.html',
                           reqform=reqform,
                           delform=delform,
                           csrf_token=delform.csrf_token,
                           errors = error)


@app.route('/success')
def success():
    return render_template('success.html') 

@app.route('/invalid', methods=(['GET']))
def inv():
    print("loaded inv") 
    return "get out now"

@app.route('/cancel', methods=('GET', 'POST'))
def cancel():
    canform = CanForm()
    if canform.validate_on_submit():
        # TODO: delete stuff from form
        return redirect(url_for('success'))
    elif request.method == "POST" and not delform.validate():
        error = 1
    else:
        error = 0
    return render_template('cancel.html',
                           canform=canform,
                           csrf_token=canform.csrf_token,
                           errors=error)

«рабочий» и «загруженный inv» печать, но новый шаблон не отображается, и я не понимаю, почему. Когда я отправляю форму, успех. html оказывает. Пожалуйста, помогите

1 Ответ

0 голосов
/ 26 марта 2020

Хорошая общая практика - знать, что будет делать GET и POST.

В вашем коде мы знаем, что POST делает в home (), но не то, что GET так попробуйте это:

@app.route('/', methods=('GET', 'POST'))
def home():
    reqform = ReqForm()
    delform = DelForm()
    error = 0
    if request.method == "POST":
        gtoken = request.json['gtoken']
        if not rc_form_valid(gtoken):
            print("working")
            return redirect(url_for('inv')) 
    elif request.method=='GET':
        return render_template('home.html',
                              reqform=reqform,
                              delform=delform,
                              csrf_token=0,
                              errors=error)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...