У меня есть веб-страница, работающая с использованием FLASK и Python, и к ней подключена база данных sqlite3. Я создаю страницу под названием гостевая книга, где прошу пользователя ввести некоторые сведения о себе: имя, адрес электронной почты, возраст, и отправляю эту информацию на сервер и в базу данных. Я возвращаю его на страницу, чтобы показать ввод от пользователей.

Весь код здесь почти скопирован / вставлен из лекций, потому что лектор показал нам код и то, как он работает, по частям, а затем нам предстояло склеить его вместе. Поэтому, когда я сравниваю код, они кажутся одинаковыми, но мой выдает ошибку, и я просто не вижу ошибки. У меня нет опечаток, файлы имеют правильные названия, строчка точно такая же, как у моих лекторов. Буду признателен, если вы укажете на мою ошибку.

Когда я запускаю файл python, он работает нормально, или, по крайней мере, я так думаю Печать экрана запуска файла python

Как бы то ни было, страница не загружается, и это сбивает с толку то, что в командном окне я не вижу ошибки, поскольку я активировал отладчик, обычно он пишет ошибку. Так что я потерялся, в чем ошибка, потому что не знаю, где искать.

Внутренняя Ошибка Сервера

Код Python:

from datetime import date
from flask import Flask, render_template, url_for, redirect, request
import sqlite3

app = Flask(__name__)
DB_FILE = 'mydb'

@app.route('/')
def main():
    return render_template('PragueMainPage.html')
#----------------------------------------------------------

@app.route('/history')
def history():
    return render_template('History.html')
#----------------------------------------------------------

@app.route('/gallery')
def gallery():
    return render_template('Gallery.html')
#----------------------------------------------------------

@app.route('/guestbook', methods=['POST'])
def guestbook():
    _insert(request.form['Name'], request.form['Email'], request.form['Age'])
    return redirect(url_for('view'))

def _insert(name, email, age):
    params = {'Name':name, 'Email':email, 'Age':age}
    connection = sqlite3.connect(DB_FILE)
    cursor = connection.cursor()  
    cursor.execute("insert into guestbook VALUES (:name, :email, :age)",params)
    connection.commit()
    cursor.close()

@app.route ('/guestbook', methods=['POST','GET'])
def view():
    connection = sqlite3.connect(DB_FILE)
    cursor = connection.cursor()
    cursor.execute("SELECT * FROM guestbook")
    rv = cursor.fetchall()
    cursor.close()
    return render_template("Guestbook.html",entries=rv)


if  __name__ == '__main__':
    app.run()

И HTML:

<!DOCTYPE html>
<html lang="en">
    <head>
        <meta charset="utf-8" />
        <link rel="stylesheet" type="text/css" href= "{{ url_for('static', filename='stylesheets/ingridpython.css') }}"/>
        <title> Prague - Guestbook</title>
    </head>
<body>
<div class ="flex-container">
   <div class ="navigation">
        <ul>
            <li><a href ='/'>Main Page </a></li>
            <li><a href ='history'>History </a></li>
            <li><a href ='gallery'>Gallery </a></li>
            <li><a href ='guestbook'>Guestbook </a></li>
       </ul>
   </div>   
</div>

<div id ="guestContainer">
    <form action ="{{url_for('guestbook')}}" method = post>
        Enter name:   <input type ="text"   name ="Name">
        Enter E-mail: <input type ="email"  name ="Email">
        Enter Age:    <input type ="text"   name ="Age">
        <input class ="submit" type ="submit" value ="Submit">
    </form>
 </div>

<div id ="guestContainerAnswer">
    <table>
        <tr>
            <th width ="350"> Guest name</th>
            <th width ="600"> Guest E-mail</th>
            <th width ="100"> Guest Age</th>
        </tr>
        {% for entry in entries %}
        <tr>
            <th>{{ entry[0]}}</th>
            <th>{{ entry[0]}}</th>
            <th>{{ entry[0]}}</th>
        </tr>
        {% endfor %} 
    </table>
</div>
-1
Ingrid 10 Янв 2018 в 06:17

1 ответ

Лучший ответ

Измените method = post в <form action на method='POST'. Полная строка должна быть:

<form action ="{{url_for('guestbook')}}" method = 'POST'>
0
Ajax1234 10 Янв 2018 в 03:46