Hướng dẫn how to get data from mongodb using flask - cách lấy dữ liệu từ mongodb bằng bình

Tác giả đã chọn quỹ nguồn mở và miễn phí để nhận quyên góp như một phần của chương trình Write for quyên góp.

Giới thiệu

Trong các ứng dụng web, bạn thường cần một cơ sở dữ liệu, là một bộ sưu tập dữ liệu có tổ chức. Bạn sử dụng cơ sở dữ liệu để lưu trữ và duy trì dữ liệu liên tục có thể được truy xuất và thao tác hiệu quả. Ví dụ: trong một ứng dụng truyền thông xã hội, bạn có một cơ sở dữ liệu trong đó dữ liệu người dùng (thông tin cá nhân, bài đăng, nhận xét, người theo dõi) được lưu trữ theo cách có thể được thao tác hiệu quả. Bạn có thể thêm dữ liệu vào cơ sở dữ liệu, truy xuất nó, sửa đổi nó hoặc xóa nó, tùy thuộc vào các yêu cầu và điều kiện khác nhau. Trong một ứng dụng web, các yêu cầu này có thể là người dùng thêm một bài đăng mới, xóa một bài đăng hoặc xóa tài khoản của họ, có thể hoặc không xóa bài đăng của họ. Các hành động bạn thực hiện để thao tác dữ liệu sẽ phụ thuộc vào các tính năng cụ thể trong ứng dụng của bạn. Ví dụ: bạn có thể không muốn người dùng thêm bài đăng không có tiêu đề.

Flask là một khung web Python nhẹ, cung cấp các công cụ và tính năng hữu ích để tạo các ứng dụng web bằng ngôn ngữ Python. MongoDB là một chương trình cơ sở dữ liệu NoQuery, định hướng tài liệu chung, sử dụng các tài liệu giống JSON để lưu trữ dữ liệu. Không giống như các mối quan hệ dạng bảng được sử dụng trong cơ sở dữ liệu quan hệ, các tài liệu giống như JSON cho phép các lược đồ linh hoạt và động trong khi duy trì sự đơn giản. Nói chung, cơ sở dữ liệu NoQuery có khả năng mở rộng theo chiều ngang, làm cho chúng phù hợp cho dữ liệu lớn và các ứng dụng thời gian thực.

Trong hướng dẫn này, bạn sẽ xây dựng một ứng dụng Web Danh sách việc làm nhỏ để trình bày cách sử dụng Thư viện Pymongo, trình điều khiển cơ sở dữ liệu MongoDB cho phép bạn tương tác với cơ sở dữ liệu MongoDB của bạn trong Python. Bạn sẽ sử dụng nó với bình để thực hiện các tác vụ cơ bản, chẳng hạn như kết nối với máy chủ cơ sở dữ liệu, tạo các bộ sưu tập lưu trữ một nhóm tài liệu trong MongoDB, chèn dữ liệu vào bộ sưu tập và truy xuất và xóa dữ liệu khỏi bộ sưu tập.

Điều kiện tiên quyết

  • Môi trường lập trình Python 3 cục bộ, hãy làm theo hướng dẫn để phân phối của bạn trong cách cài đặt và thiết lập môi trường lập trình cục bộ cho Sê -ri Python 3. Trong hướng dẫn này, chúng tôi sẽ gọi thư mục dự án của chúng tôi

    1. nano app.py
    7.

  • MongoDB được cài đặt trên máy cục bộ của bạn. Thực hiện theo cách cài đặt MongoDB trên hướng dẫn Ubuntu 20.04 để thiết lập cơ sở dữ liệu MongoDB của bạn.

  • Một sự hiểu biết về các khái niệm bình cơ bản, chẳng hạn như các tuyến đường, xem các chức năng và mẫu. Nếu bạn không quen thuộc với bình, hãy xem cách tạo ứng dụng web đầu tiên của bạn bằng Flask và Python và cách sử dụng các mẫu trong ứng dụng bình.

  • Một sự hiểu biết về các khái niệm HTML cơ bản. Bạn có thể xem lại cách xây dựng một trang web với loạt hướng dẫn HTML để biết kiến ​​thức nền.

Bước 1 - Thiết lập pymongo và bình

Trong bước này, bạn sẽ cài đặt bình và thư viện pymongo.

Với môi trường ảo được kích hoạt, sử dụng

  1. nano app.py
8 để cài đặt bình và pymongo:

  1. pip install Flask pymongo

Sau khi cài đặt được hoàn thành thành công, bạn sẽ thấy một dòng tương tự như sau ở cuối đầu ra:

Output

Successfully installed Flask-2.0.2 Jinja2-3.0.3 MarkupSafe-2.0.1 Werkzeug-2.0.2 click-8.0.3 itsdangerous-2.0.1 pymongo-4.0.1

Bây giờ bạn đã cài đặt các gói Python cần thiết, bạn sẽ kết nối với máy chủ MongoDB của mình và tạo một bộ sưu tập.

Bước 2 - Kết nối với máy chủ MongoDB và tạo bộ sưu tập

Trong bước này, bạn sẽ sử dụng thư viện Pymongo để tạo máy khách mà bạn sẽ sử dụng để tương tác với máy chủ MongoDB của mình, tạo cơ sở dữ liệu và sau đó tạo một bộ sưu tập để lưu trữ TODOS của bạn.

Với môi trường lập trình của bạn được kích hoạt, hãy mở một tệp có tên

  1. nano app.py
9 để chỉnh sửa bên trong thư mục
  1. nano app.py
7 của bạn:

  1. nano app.py

Tệp này sẽ nhập lớp cần thiết và người trợ giúp từ Flask và Thư viện Pymongo. Bạn sẽ tương tác với máy chủ MongoDB của mình để tạo cơ sở dữ liệu và tạo một bộ sưu tập cho TODOS. Thêm mã sau vào

  1. nano app.py
9:

flask_app/app.py

from flask import Flask
from pymongo import MongoClient

app = Flask(__name__)

client = MongoClient('localhost', 27017)

db = client.flask_db
todos = db.todos

Lưu và đóng tập tin.

Ở đây bạn nhập lớp

from flask import Flask
from pymongo import MongoClient

app = Flask(__name__)

client = MongoClient('localhost', 27017)

db = client.flask_db
todos = db.todos
2 mà bạn sử dụng để tạo một thể hiện ứng dụng bình được gọi là
from flask import Flask
from pymongo import MongoClient

app = Flask(__name__)

client = MongoClient('localhost', 27017)

db = client.flask_db
todos = db.todos
3.

Bạn nhập

from flask import Flask
from pymongo import MongoClient

app = Flask(__name__)

client = MongoClient('localhost', 27017)

db = client.flask_db
todos = db.todos
4 mà bạn sử dụng để tạo đối tượng máy khách cho phiên bản MongoDB có tên
from flask import Flask
from pymongo import MongoClient

app = Flask(__name__)

client = MongoClient('localhost', 27017)

db = client.flask_db
todos = db.todos
5, cho phép bạn kết nối và tương tác với máy chủ MongoDB của bạn. Khi bạn khởi tạo
from flask import Flask
from pymongo import MongoClient

app = Flask(__name__)

client = MongoClient('localhost', 27017)

db = client.flask_db
todos = db.todos
6, bạn chuyển nó vào máy chủ của máy chủ MongoDB của bạn, đó là
from flask import Flask
from pymongo import MongoClient

app = Flask(__name__)

client = MongoClient('localhost', 27017)

db = client.flask_db
todos = db.todos
7 trong trường hợp của chúng tôi và cổng, đó là
from flask import Flask
from pymongo import MongoClient

app = Flask(__name__)

client = MongoClient('localhost', 27017)

db = client.flask_db
todos = db.todos
8 ở đây.

Note:

Chúng tôi khuyên bạn nên cứng người bảo mật cài đặt MongoDB của mình bằng cách làm theo hướng dẫn của chúng tôi về cách bảo mật MongoDB trên Ubuntu 20.04. Khi nó được bảo mật, sau đó bạn có thể định cấu hình MongoDB để chấp nhận các kết nối từ xa.strongly recommended that you harden your MongoDB installation’s security by following our guide on How To Secure MongoDB on Ubuntu 20.04. Once it’s secured, you could then configure MongoDB to accept remote connections.

Khi bạn bật xác thực trong MongoDB, bạn sẽ cần phải vượt qua các tham số

from flask import Flask
from pymongo import MongoClient

app = Flask(__name__)

client = MongoClient('localhost', 27017)

db = client.flask_db
todos = db.todos
9 và
client = MongoClient('localhost', 27017, username='username', password='password')
0 khi tạo một thể hiện
from flask import Flask
from pymongo import MongoClient

app = Flask(__name__)

client = MongoClient('localhost', 27017)

db = client.flask_db
todos = db.todos
6 như vậy:

client = MongoClient('localhost', 27017, username='username', password='password')

Sau đó, bạn sử dụng thể hiện

from flask import Flask
from pymongo import MongoClient

app = Flask(__name__)

client = MongoClient('localhost', 27017)

db = client.flask_db
todos = db.todos
5 để tạo cơ sở dữ liệu MongoDB gọi là
client = MongoClient('localhost', 27017, username='username', password='password')
3 và lưu tham chiếu đến nó trong một biến gọi là
client = MongoClient('localhost', 27017, username='username', password='password')
4.

Sau đó, bạn tạo một bộ sưu tập có tên

client = MongoClient('localhost', 27017, username='username', password='password')
5 trên cơ sở dữ liệu
client = MongoClient('localhost', 27017, username='username', password='password')
3 bằng cách sử dụng biến
client = MongoClient('localhost', 27017, username='username', password='password')
4. Bộ sưu tập lưu trữ một nhóm các tài liệu trong MongoDB, như các bảng trong cơ sở dữ liệu quan hệ.

Trong MongoDB, cơ sở dữ liệu và bộ sưu tập được tạo ra một cách lười biếng. Điều này có nghĩa là ngay cả khi bạn thực thi tệp

  1. nano app.py
9, không có mã nào liên quan đến cơ sở dữ liệu sẽ thực sự được thực thi cho đến khi tài liệu đầu tiên được tạo. Bạn sẽ tạo một ứng dụng Bình nhỏ với một trang cho phép người dùng chèn các tài liệu TODO vào bộ sưu tập
client = MongoClient('localhost', 27017, username='username', password='password')
5 của bạn trong bước tiếp theo. Khi tài liệu TODO đầu tiên được thêm vào, cơ sở dữ liệu
client = MongoClient('localhost', 27017, username='username', password='password')
3 và bộ sưu tập
client = MongoClient('localhost', 27017, username='username', password='password')
5 sẽ được tạo trên máy chủ MongoDB của bạn.

Để có được danh sách các cơ sở dữ liệu hiện tại của bạn, hãy mở một thiết bị đầu cuối mới và khởi động shell

  1. mongo
2 bằng lệnh sau:

  1. mongo

Lời nhắc sẽ được mở, bạn có thể kiểm tra cơ sở dữ liệu của mình bằng lệnh sau:

  1. show dbs

Đầu ra, nếu đây là bản cài đặt mới của MongoDB, sẽ liệt kê cơ sở dữ liệu

  1. mongo
3,
  1. mongo
4 và
  1. mongo
5.

Bạn có thể nhận thấy rằng

client = MongoClient('localhost', 27017, username='username', password='password')
3 không tồn tại. Để lại vỏ
  1. mongo
2 chạy trong cửa sổ thiết bị đầu cuối và tiếp tục bước tiếp theo.

Bước 3 - Tạo một trang web để thêm và hiển thị TODOS

Trong bước này, bạn sẽ tạo một trang web với một biểu mẫu web cho phép người dùng thêm TODO và hiển thị chúng trên cùng một trang.

Với môi trường lập trình của bạn được kích hoạt, hãy mở tệp

  1. nano app.py
9 của bạn để chỉnh sửa:

  1. nano app.py

Đầu tiên, thêm các nhập khẩu sau từ

  1. mongo
9:

flask_app/app.py

from flask import Flask, render_template, request, url_for, redirect
from pymongo import MongoClient

# ...

Ở đây, bạn nhập chức năng

  1. show dbs
0 Helper mà bạn sẽ sử dụng để hiển thị mẫu HTML, đối tượng
  1. show dbs
1 để truy cập dữ liệu mà người dùng sẽ gửi, hàm
  1. show dbs
2 để tạo URL và chức năng
  1. show dbs
3 để chuyển hướng người dùng trở lại trang chỉ mục sau khi Thêm một việc todo.

Sau đó thêm tuyến sau ở cuối tệp:

flask_app/app.py

# ...


@app.route('/', methods=('GET', 'POST'))
def index():
    return render_template('index.html')

Lưu và đóng tập tin.

Trong tuyến đường này, bạn chuyển Tuple

  1. show dbs
4 cho tham số
  1. show dbs
5 để cho phép cả nhận và đăng yêu cầu. Nhận yêu cầu được sử dụng để lấy dữ liệu từ máy chủ. Yêu cầu POST được sử dụng để đăng dữ liệu lên một tuyến đường cụ thể. Theo mặc định, chỉ cho phép nhận được yêu cầu. Khi người dùng trước tiên yêu cầu tuyến
  1. show dbs
6 bằng yêu cầu GET, một tệp mẫu có tên
  1. show dbs
7 sẽ được hiển thị. Sau đó, bạn sẽ chỉnh sửa tuyến đường này để xử lý các yêu cầu POST khi người dùng điền và gửi biểu mẫu web để tạo todos mới.

Tiếp theo Tạo một thư mục mẫu trong thư mục

  1. nano app.py
7 của bạn và mẫu
  1. show dbs
7 bạn đã tham khảo trong tuyến trước:

Output

Successfully installed Flask-2.0.2 Jinja2-3.0.3 MarkupSafe-2.0.1 Werkzeug-2.0.2 click-8.0.3 itsdangerous-2.0.1 pymongo-4.0.1
0

Thêm mã sau bên trong tệp

  1. show dbs
7:

flask_app/templates/index.html

Output

Successfully installed Flask-2.0.2 Jinja2-3.0.3 MarkupSafe-2.0.1 Werkzeug-2.0.2 click-8.0.3 itsdangerous-2.0.1 pymongo-4.0.1
1

Lưu và đóng tập tin.

Trong tuyến đường này, bạn chuyển Tuple

  1. show dbs
4 cho tham số
  1. show dbs
5 để cho phép cả nhận và đăng yêu cầu. Nhận yêu cầu được sử dụng để lấy dữ liệu từ máy chủ. Yêu cầu POST được sử dụng để đăng dữ liệu lên một tuyến đường cụ thể. Theo mặc định, chỉ cho phép nhận được yêu cầu. Khi người dùng trước tiên yêu cầu tuyến
  1. show dbs
6 bằng yêu cầu GET, một tệp mẫu có tên
  1. show dbs
7 sẽ được hiển thị. Sau đó, bạn sẽ chỉnh sửa tuyến đường này để xử lý các yêu cầu POST khi người dùng điền và gửi biểu mẫu web để tạo todos mới.Important option or the Unimportant option when creating a todo. Last, you have a Submit button at the end of the form.

Tiếp theo Tạo một thư mục mẫu trong thư mục

  1. nano app.py
7 của bạn và mẫu
  1. show dbs
7 bạn đã tham khảo trong tuyến trước:

Output

Successfully installed Flask-2.0.2 Jinja2-3.0.3 MarkupSafe-2.0.1 Werkzeug-2.0.2 click-8.0.3 itsdangerous-2.0.1 pymongo-4.0.1
2

Thêm mã sau bên trong tệp

  1. show dbs
7:

Output

Successfully installed Flask-2.0.2 Jinja2-3.0.3 MarkupSafe-2.0.1 Werkzeug-2.0.2 click-8.0.3 itsdangerous-2.0.1 pymongo-4.0.1
3

Ở đây bạn có một trang HTML cơ bản với một tiêu đề, một số phong cách, tiêu đề và biểu mẫu web. Trong biểu mẫu Web, bạn đặt thuộc tính

  1. nano app.py
1 thành
  1. nano app.py
2 để chỉ ra rằng biểu mẫu sẽ gửi yêu cầu POST. Bạn có một trường đầu vào văn bản cho nội dung TODO với tên
  1. nano app.py
3 mà bạn sẽ sử dụng để truy cập dữ liệu tiêu đề trong tuyến đường
  1. show dbs
6 của bạn. Bạn cũng có hai nút radio HTML có tên
  1. nano app.py
5, cho phép người dùng chỉ định mức độ quan trọng đối với mỗi mục việc cần làm: họ có thể chọn tùy chọn quan trọng hoặc tùy chọn không quan trọng khi tạo một việc todo. Cuối cùng, bạn có một nút gửi ở cuối biểu mẫu.
You might receive a
from flask import Flask, render_template, request, url_for, redirect
from pymongo import MongoClient

# ...
1 error when attempting to run the application. To fix this, deactivate your virtual environment and reactivate it. Then run the
from flask import Flask, render_template, request, url_for, redirect
from pymongo import MongoClient

# ...
2 command again.

Mặc dù trong thư mục

  1. nano app.py
7 của bạn với môi trường ảo được kích hoạt, hãy kể bình nói về ứng dụng (
  1. nano app.py
9 trong trường hợp này) bằng cách sử dụng biến môi trường
  1. nano app.py
8. Sau đó đặt biến môi trường
  1. nano app.py
9 thành
from flask import Flask, render_template, request, url_for, redirect
from pymongo import MongoClient

# ...
0 để chạy ứng dụng ở chế độ phát triển và có quyền truy cập vào trình gỡ lỗi. Để biết thêm thông tin về trình gỡ lỗi bình, xem cách xử lý các lỗi trong ứng dụng bình. Sử dụng các lệnh sau để làm điều này:

Output

Successfully installed Flask-2.0.2 Jinja2-3.0.3 MarkupSafe-2.0.1 Werkzeug-2.0.2 click-8.0.3 itsdangerous-2.0.1 pymongo-4.0.1
4

Tiếp theo, chạy ứng dụng:Submit button.

Hướng dẫn how to get data from mongodb using flask - cách lấy dữ liệu từ mongodb bằng bình

Lưu ý: Bạn có thể nhận được lỗi

from flask import Flask, render_template, request, url_for, redirect
from pymongo import MongoClient

# ...
1 khi cố gắng chạy ứng dụng. Để khắc phục điều này, hủy kích hoạt môi trường ảo của bạn và kích hoạt lại nó. Sau đó chạy lại lệnh
from flask import Flask, render_template, request, url_for, redirect
from pymongo import MongoClient

# ...
2.

Nếu bạn điền vào biểu mẫu và gửi nó, gửi yêu cầu bài đăng đến máy chủ, không có gì xảy ra vì bạn không xử lý các yêu cầu POST trên tuyến

  1. show dbs
6.

Để máy chủ chạy và mở một cửa sổ thiết bị đầu cuối mới.

Mở

  1. nano app.py
9 để xử lý yêu cầu bài đăng Người dùng gửi, thêm chúng vào Bộ sưu tập Todos và hiển thị chúng trên trang Index:

  1. nano app.py

Chỉnh sửa tuyến đường

  1. show dbs
6 để trông như sau:

flask_app/app.py

Output

Successfully installed Flask-2.0.2 Jinja2-3.0.3 MarkupSafe-2.0.1 Werkzeug-2.0.2 click-8.0.3 itsdangerous-2.0.1 pymongo-4.0.1
6

Lưu và đóng tập tin.

Trong những thay đổi này, bạn xử lý các yêu cầu POST bên trong điều kiện

from flask import Flask, render_template, request, url_for, redirect
from pymongo import MongoClient

# ...
6. Bạn trích xuất Nội dung TODO và mức độ quan trọng mà người dùng gửi từ đối tượng
from flask import Flask, render_template, request, url_for, redirect
from pymongo import MongoClient

# ...
7.

Bạn sử dụng phương thức

from flask import Flask, render_template, request, url_for, redirect
from pymongo import MongoClient

# ...
8 trên bộ sưu tập Todos để thêm tài liệu việc cần làm vào đó. Bạn cung cấp dữ liệu việc làm trong từ điển Python, đặt
from flask import Flask, render_template, request, url_for, redirect
from pymongo import MongoClient

# ...
9 thành giá trị mà người dùng đã gửi trong trường văn bản cho nội dung TODO và đặt khóa
# ...


@app.route('/', methods=('GET', 'POST'))
def index():
    return render_template('index.html')
0 thành giá trị của nút radio mà người dùng chọn. Sau đó, bạn chuyển hướng đến trang Index, sẽ làm mới trang và hiển thị mục TODO mới được thêm.

Để hiển thị tất cả các TODO đã lưu, bạn sử dụng phương thức

# ...


@app.route('/', methods=('GET', 'POST'))
def index():
    return render_template('index.html')
1 bên ngoài mã chịu trách nhiệm xử lý các yêu cầu bài, trả về tất cả các tài liệu việc cần làm trong bộ sưu tập
client = MongoClient('localhost', 27017, username='username', password='password')
5. Bạn lưu Todos bạn nhận được từ cơ sở dữ liệu trong một biến có tên là
# ...


@app.route('/', methods=('GET', 'POST'))
def index():
    return render_template('index.html')
3, và sau đó bạn chỉnh sửa lệnh gọi hàm
  1. show dbs
0 để chuyển danh sách các tài liệu todo cho mẫu
  1. show dbs
7, sẽ có sẵn trong mẫu trong một biến có tên là
client = MongoClient('localhost', 27017, username='username', password='password')
5.

Nếu bạn làm mới trang chỉ mục, bạn có thể nhận được một thông báo từ trình duyệt yêu cầu bạn xác nhận việc gửi lại biểu mẫu. Nếu bạn chấp nhận, mục TODO bạn đã gửi trước đó trước khi xử lý các yêu cầu POST sau đó sẽ được thêm vào cơ sở dữ liệu, vì mã để xử lý các biểu mẫu hiện tồn tại trong tuyến đường.

Bởi vì trang chỉ mục chưa có mã để hiển thị các mục TODO, mục bạn đã thêm sẽ không hiển thị. Nếu bạn cho phép trình duyệt gửi lại biểu mẫu của bạn, bạn có thể xem dữ liệu mới được thêm vào bằng cách mở vỏ Mongo của bạn và kết nối với cơ sở dữ liệu

client = MongoClient('localhost', 27017, username='username', password='password')
3 bằng cách sử dụng lệnh sau:

Output

Successfully installed Flask-2.0.2 Jinja2-3.0.3 MarkupSafe-2.0.1 Werkzeug-2.0.2 click-8.0.3 itsdangerous-2.0.1 pymongo-4.0.1
7

Sau đó, sử dụng chức năng

# ...


@app.route('/', methods=('GET', 'POST'))
def index():
    return render_template('index.html')
1 để có tất cả các mục TODO trong cơ sở dữ liệu:

Output

Successfully installed Flask-2.0.2 Jinja2-3.0.3 MarkupSafe-2.0.1 Werkzeug-2.0.2 click-8.0.3 itsdangerous-2.0.1 pymongo-4.0.1
8

Nếu bất kỳ dữ liệu nào được gửi lại, bạn sẽ thấy nó ở đây trong đầu ra của bạn.

Tiếp theo, hãy mở mẫu

  1. show dbs
7 để hiển thị nội dung của danh sách
client = MongoClient('localhost', 27017, username='username', password='password')
5 bạn đã chuyển cho nó:

Output

Successfully installed Flask-2.0.2 Jinja2-3.0.3 MarkupSafe-2.0.1 Werkzeug-2.0.2 click-8.0.3 itsdangerous-2.0.1 pymongo-4.0.1
9

Chỉnh sửa tệp bằng cách thêm lỗi

Output

Successfully installed Flask-2.0.2 Jinja2-3.0.3 MarkupSafe-2.0.1 Werkzeug-2.0.2 click-8.0.3 itsdangerous-2.0.1 pymongo-4.0.1
01 và vòng lặp Jinja

Output

Successfully installed Flask-2.0.2 Jinja2-3.0.3 MarkupSafe-2.0.1 Werkzeug-2.0.2 click-8.0.3 itsdangerous-2.0.1 pymongo-4.0.1
02 sau biểu mẫu, để tệp trông như sau:

flask_app/templates/index.html

  1. nano app.py
0

Lưu và đóng tập tin.

Trong những thay đổi này, bạn xử lý các yêu cầu POST bên trong điều kiện

from flask import Flask, render_template, request, url_for, redirect
from pymongo import MongoClient

# ...
6. Bạn trích xuất Nội dung TODO và mức độ quan trọng mà người dùng gửi từ đối tượng
from flask import Flask, render_template, request, url_for, redirect
from pymongo import MongoClient

# ...
7.

Bạn sử dụng phương thức

from flask import Flask, render_template, request, url_for, redirect
from pymongo import MongoClient

# ...
8 trên bộ sưu tập Todos để thêm tài liệu việc cần làm vào đó. Bạn cung cấp dữ liệu việc làm trong từ điển Python, đặt
from flask import Flask, render_template, request, url_for, redirect
from pymongo import MongoClient

# ...
9 thành giá trị mà người dùng đã gửi trong trường văn bản cho nội dung TODO và đặt khóa
# ...


@app.route('/', methods=('GET', 'POST'))
def index():
    return render_template('index.html')
0 thành giá trị của nút radio mà người dùng chọn. Sau đó, bạn chuyển hướng đến trang Index, sẽ làm mới trang và hiển thị mục TODO mới được thêm.

Để hiển thị tất cả các TODO đã lưu, bạn sử dụng phương thức

# ...


@app.route('/', methods=('GET', 'POST'))
def index():
    return render_template('index.html')
1 bên ngoài mã chịu trách nhiệm xử lý các yêu cầu bài, trả về tất cả các tài liệu việc cần làm trong bộ sưu tập
client = MongoClient('localhost', 27017, username='username', password='password')
5. Bạn lưu Todos bạn nhận được từ cơ sở dữ liệu trong một biến có tên là
# ...


@app.route('/', methods=('GET', 'POST'))
def index():
    return render_template('index.html')
3, và sau đó bạn chỉnh sửa lệnh gọi hàm
  1. show dbs
0 để chuyển danh sách các tài liệu todo cho mẫu
  1. show dbs
7, sẽ có sẵn trong mẫu trong một biến có tên là
client = MongoClient('localhost', 27017, username='username', password='password')
5.

Nếu bạn làm mới trang chỉ mục, bạn có thể nhận được một thông báo từ trình duyệt yêu cầu bạn xác nhận việc gửi lại biểu mẫu. Nếu bạn chấp nhận, mục TODO bạn đã gửi trước đó trước khi xử lý các yêu cầu POST sau đó sẽ được thêm vào cơ sở dữ liệu, vì mã để xử lý các biểu mẫu hiện tồn tại trong tuyến đường.

Bởi vì trang chỉ mục chưa có mã để hiển thị các mục TODO, mục bạn đã thêm sẽ không hiển thị. Nếu bạn cho phép trình duyệt gửi lại biểu mẫu của bạn, bạn có thể xem dữ liệu mới được thêm vào bằng cách mở vỏ Mongo của bạn và kết nối với cơ sở dữ liệu

client = MongoClient('localhost', 27017, username='username', password='password')
3 bằng cách sử dụng lệnh sau:

Sau đó, sử dụng chức năng

# ...


@app.route('/', methods=('GET', 'POST'))
def index():
    return render_template('index.html')
1 để có tất cả các mục TODO trong cơ sở dữ liệu:

Nếu bất kỳ dữ liệu nào được gửi lại, bạn sẽ thấy nó ở đây trong đầu ra của bạn.

Tiếp theo, hãy mở mẫu

  1. show dbs
7 để hiển thị nội dung của danh sách
client = MongoClient('localhost', 27017, username='username', password='password')
5 bạn đã chuyển cho nó:

  1. nano app.py

Chỉnh sửa tệp bằng cách thêm lỗi

Output

Successfully installed Flask-2.0.2 Jinja2-3.0.3 MarkupSafe-2.0.1 Werkzeug-2.0.2 click-8.0.3 itsdangerous-2.0.1 pymongo-4.0.1
01 và vòng lặp Jinja

Output

Successfully installed Flask-2.0.2 Jinja2-3.0.3 MarkupSafe-2.0.1 Werkzeug-2.0.2 click-8.0.3 itsdangerous-2.0.1 pymongo-4.0.1
02 sau biểu mẫu, để tệp trông như sau:

flask_app/app.py

  1. nano app.py
2

Trong tệp này, bạn thêm thẻ

Output

Successfully installed Flask-2.0.2 Jinja2-3.0.3 MarkupSafe-2.0.1 Werkzeug-2.0.2 click-8.0.3 itsdangerous-2.0.1 pymongo-4.0.1
01 để phân tách biểu mẫu web và danh sách TODO.

Bạn sử dụng vòng lặp

Output

Successfully installed Flask-2.0.2 Jinja2-3.0.3 MarkupSafe-2.0.1 Werkzeug-2.0.2 click-8.0.3 itsdangerous-2.0.1 pymongo-4.0.1
02 trong dòng

Output

Successfully installed Flask-2.0.2 Jinja2-3.0.3 MarkupSafe-2.0.1 Werkzeug-2.0.2 click-8.0.3 itsdangerous-2.0.1 pymongo-4.0.1
05 để đi qua từng mục việc cần làm trong danh sách
client = MongoClient('localhost', 27017, username='username', password='password')
5. Bạn hiển thị nội dung TODO và mức độ quan trọng bên trong thẻ

Output

Successfully installed Flask-2.0.2 Jinja2-3.0.3 MarkupSafe-2.0.1 Werkzeug-2.0.2 click-8.0.3 itsdangerous-2.0.1 pymongo-4.0.1
07.

flask_app/app.py

  1. nano app.py
3

Lưu và đóng tập tin.

Trong những thay đổi này, bạn xử lý các yêu cầu POST bên trong điều kiện

from flask import Flask, render_template, request, url_for, redirect
from pymongo import MongoClient

# ...
6. Bạn trích xuất Nội dung TODO và mức độ quan trọng mà người dùng gửi từ đối tượng
from flask import Flask, render_template, request, url_for, redirect
from pymongo import MongoClient

# ...
7.

Bạn sử dụng phương thức

from flask import Flask, render_template, request, url_for, redirect
from pymongo import MongoClient

# ...
8 trên bộ sưu tập Todos để thêm tài liệu việc cần làm vào đó. Bạn cung cấp dữ liệu việc làm trong từ điển Python, đặt
from flask import Flask, render_template, request, url_for, redirect
from pymongo import MongoClient

# ...
9 thành giá trị mà người dùng đã gửi trong trường văn bản cho nội dung TODO và đặt khóa
# ...


@app.route('/', methods=('GET', 'POST'))
def index():
    return render_template('index.html')
0 thành giá trị của nút radio mà người dùng chọn. Sau đó, bạn chuyển hướng đến trang Index, sẽ làm mới trang và hiển thị mục TODO mới được thêm.

Sau khi xóa tài liệu TODO, bạn chuyển hướng người dùng đến trang Index.

Tiếp theo, chỉnh sửa mẫu

  1. show dbs
7 để thêm nút DELETE TODO:Delete Todo button:

Output

Successfully installed Flask-2.0.2 Jinja2-3.0.3 MarkupSafe-2.0.1 Werkzeug-2.0.2 click-8.0.3 itsdangerous-2.0.1 pymongo-4.0.1
9

Chỉnh sửa vòng lặp

Output

Successfully installed Flask-2.0.2 Jinja2-3.0.3 MarkupSafe-2.0.1 Werkzeug-2.0.2 click-8.0.3 itsdangerous-2.0.1 pymongo-4.0.1
02 bằng cách thêm thẻ

Output

Successfully installed Flask-2.0.2 Jinja2-3.0.3 MarkupSafe-2.0.1 Werkzeug-2.0.2 click-8.0.3 itsdangerous-2.0.1 pymongo-4.0.1
25 mới:

flask_app/templates/index.html

  1. nano app.py
5

Lưu và đóng tập tin.

Ở đây, bạn có một biểu mẫu web gửi yêu cầu POST đến chức năng xem ____10109. Bạn vượt qua

Output

Successfully installed Flask-2.0.2 Jinja2-3.0.3 MarkupSafe-2.0.1 Werkzeug-2.0.2 click-8.0.3 itsdangerous-2.0.1 pymongo-4.0.1
27 để chỉ định việc cần làm sẽ bị xóa. Bạn sử dụng phương thức

Output

Successfully installed Flask-2.0.2 Jinja2-3.0.3 MarkupSafe-2.0.1 Werkzeug-2.0.2 click-8.0.3 itsdangerous-2.0.1 pymongo-4.0.1
28 có sẵn trong các trình duyệt web để hiển thị thông báo xác nhận trước khi gửi yêu cầu.

Bây giờ hãy làm mới trang chỉ mục của bạn và bạn sẽ thấy một nút TODO xóa bên dưới mỗi mục TODO. Nhấp vào nó, và xác nhận xóa. Bạn sẽ được chuyển hướng đến trang Index và việc TODO sẽ không còn ở đó nữa.Delete Todo button below each todo item. Click on it, and confirm the deletion. You’ll be redirected to the index page, and the todo will no longer be there.

Bây giờ bạn có một cách để xóa Todos không mong muốn khỏi cơ sở dữ liệu MongoDB của bạn trong ứng dụng bình của bạn.

Để xác nhận việc xóa, hãy mở vỏ Mongo của bạn và sử dụng hàm

# ...


@app.route('/', methods=('GET', 'POST'))
def index():
    return render_template('index.html')
1:

Output

Successfully installed Flask-2.0.2 Jinja2-3.0.3 MarkupSafe-2.0.1 Werkzeug-2.0.2 click-8.0.3 itsdangerous-2.0.1 pymongo-4.0.1
8

Bạn sẽ thấy rằng các mục bạn đã xóa không còn trong bộ sưu tập

client = MongoClient('localhost', 27017, username='username', password='password')
5 của bạn.

Sự kết luận

Bạn đã xây dựng một ứng dụng web nhỏ để quản lý TODO giao tiếp với cơ sở dữ liệu MongoDB. Bạn đã học cách kết nối với máy chủ cơ sở dữ liệu MongoDB, tạo các bộ sưu tập lưu trữ một nhóm tài liệu, chèn dữ liệu vào bộ sưu tập và truy xuất và xóa dữ liệu khỏi bộ sưu tập.

Nếu bạn muốn đọc thêm về Flask, hãy xem các hướng dẫn khác trong cách tạo các trang web với sê -ri Flask.

Để biết thêm về MongoDB, hãy xem Cách quản lý dữ liệu của chúng tôi với loạt Hướng dẫn MongoDB.

Flask có hỗ trợ cơ sở dữ liệu NoQuery không?

Một số cơ sở dữ liệu phổ biến mà các nhà phát triển sử dụng với Flask-Sqlalchemy là SQLite, PostgreSQL, MySQL, v.v. Flask cũng có các plugin như Flask-Mongoengine, Flask-Mo như MongoDB và CouchDB.Flask also has plugins such as Flask-MongoEngine, Flask-MongoAlchemy, Flask-CouchDB, etc. to work with NoSQL document-based databases such as MongoDB, and CouchDB.

Làm thế nào để Fastapi kết nối với MongoDB?

Mục lục..
Prerequisites..
Bước 1: Thiết lập ban đầu và tạo môi trường ảo ..
Bước 2: Cài đặt phụ thuộc ..
Bước 3: Tạo điểm cuối gốc cho Fastapi ..
Bước 4: Cấu hình Atlas MongoDB ..
Bước 5: Tạo thêm điểm cuối của người dùng ..

Sqlalchemy có làm việc với MongoDB không?

Với đầu nối CDATA Python cho MongoDB và bộ công cụ SQLalchemy, bạn có thể xây dựng các ứng dụng và tập lệnh Python kết nối MongoDB.Bài viết này cho thấy cách sử dụng sqlalchemy để kết nối với dữ liệu MongoDB để truy vấn, cập nhật, xóa và chèn dữ liệu MongoDB.. This article shows how to use SQLAlchemy to connect to MongoDB data to query, update, delete, and insert MongoDB data.

Cái nào tốt hơn pymongo hay cầy Mongoengine?

Cả Pymongo và Mongoengine đều có thể được sử dụng để truy cập dữ liệu từ cơ sở dữ liệu MongoDB.Tuy nhiên, họ làm việc theo những cách rất khác nhau và cung cấp các tính năng khác nhau.Pymongo là thư viện khuyến nghị MongoDB.Nó giúp bạn dễ dàng sử dụng các tài liệu MongoDB và bản đồ trực tiếp đến ngôn ngữ truy vấn MongoDB quen thuộc.PyMongo is the MongoDB recommended library. It makes it easy to use MongoDB documents and maps directly to the familiar MongoDB Query Language.