Я попытался поместить данные формы в мою show.html страница. Но это не работает. Я использую flask_sqlalchemy. Я начинающий во flask

#python #flask #flask-sqlalchemy

#python #flask #flask-sqlalchemy

Вопрос:

Я хочу иметь возможность отправлять данные в мое приложение Flask. Я попытался получить доступ к request.форма, но это пустая строка. Как вы получаете доступ к данным запроса? Я хочу иметь возможность отправлять данные в мое приложение Flask. Я попытался получить доступ к request.форма, но это пустая строка. Как вы получаете доступ к данным запроса?

мой app.py файл

 from flask import Flask,render_template,request,redirect,url_for
from flask_sqlalchemy import SQLAlchemy
app=Flask(__name__)
app.config['SQLALCHEMY_DATABASE_URI']='sqlite:///students.sqlite3'
db=SQLAlchemy(app)
class students(db.Model):
    id=db.Column('student_id',db.Integer, primary_key=True)
    name=db.Column(db.String(100))
    city=db.Column(db.String(50))
    addr=db.Column(db.String(200))
    pin=db.Column(db.String(10))
def __init__(self,name,city,addr,pin):
    self.name=name
    self.city=city
    self.addr=addr
    self.pin=pin
@app.route('/',methods=['GET','POST'])
def show_all():
    return render_template('show.html',students=students.query.all())
@app.route('/new',methods=['GET','POST'])
def new():
    if request.method == 'POST':
        student=students(request.form['name'],request.form['city'],
        request.form['addr'],request.form['pin'])
        db.session.add(student)
        db.session.commit()
        return redirect(url_for('show_all'))
    return render_template('new.html')

if __name__ == "__main__":
    app.run(debug=True)
  

мой new.html файл

 <!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>
    <form action="/" method="post">
    <input type="text" name="name" placeholder="Your name"><br>
    <input type="text" name="city" placeholder="Your city"><br>
    <input type="text" name="addr" placeholder="your address"><br>
    <input type="text" name="pin" placeholder="your pin"><br>
    <input type="submit" valu='Submit'>
    </form>
</body>
</html>
  

мой show.html файл

 <!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>
    <h3>students <a href="{{url_for('new')}}">Add student</a></h3>
    <table>
        <thead>
            <tr>
                <th>Name</th>
                <th>City</th>
                <th>Addr</th>
                <th>Pin</th>
            </tr>
        </thead>
        <tbody>
            {% for student in students %}
            <tr>
                <td>{{ student.name }}</td>
                <td>{{ student.city }}</td>
                <td>{{ student.addr }}</td>
                <td>{{ student.pin }}</td>
            </tr>
            {% endfor %}
        </tbody>
    </table>
</body>
</html>
  

Комментарии:

1. Привет, не могли бы вы, пожалуйста, опубликовать свою структуру каталогов? Т.е. находятся ли ваши html-файлы в каталоге templates?

2. Что вы пытались отладить проблему? Где именно весь этот код идет не так?

3. нет, я новичок в flask. я не смог отладить проблему

Ответ №1:

в new.html вы отправляете данные по корневому пути / вместо /new