#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