Làm cách nào để lấy dữ liệu html trong bình?

Nhưng đừng băn khoăn, chúng ta chưa xong đâu. Chúng tôi vẫn còn ít nhất một. một công cụ tạo khuôn mẫu có tên là Jinja, để giúp chúng tôi thêm dữ liệu từ cơ sở dữ liệu vào trang web của chúng tôi

Ngay bây giờ khi chúng tôi gọi

@app.route("/")
def hello():
    school_count = School.query.count()
    return render_template("index.html", count=school_count)
8, tất cả những gì chúng tôi cung cấp cho nó là tên của mẫu. Nếu chúng tôi loại bỏ thực hành ORM, lộ trình
    return render_template("index.html", count=School.query.count())
0 của chúng tôi trông khá đơn giản

@app.route("/")
def hello():
    # ....ignoring the ORM practice ....
    return render_template("index.html")

Hóa ra chúng ta có thể nâng cấp mọi thứ bằng cách gửi thông tin bổ sung đến mẫu. Giả sử chúng ta muốn gửi số lượng trường đến trang web và chúng ta đoán đó là khoảng 900 trường. Chúng ta có thể điều chỉnh cuộc gọi

@app.route("/")
def hello():
    school_count = School.query.count()
    return render_template("index.html", count=school_count)
8 như thế này

@app.route("/")
def hello():
    # ....ignoring the ORM practice ....
    return render_template("index.html", count=90)

    return render_template("index.html", count=School.query.count())
2 chỉ là một tên biến mới, nó có thể là bất cứ thứ gì.
    return render_template("index.html", count=School.query.count())
3,
    return render_template("index.html", count=School.query.count())
4, bạn có thể chọn bất kỳ tên biến nào trong đó và bạn sẽ ổn thôi. Bằng cách đếm
    return render_template("index.html", count=School.query.count())
5 với
@app.route("/")
def hello():
    school_count = School.query.count()
    return render_template("index.html", count=school_count)
8, chúng tôi đang gửi một biến có tên là
    return render_template("index.html", count=School.query.count())
2 tới mẫu

Bây giờ chúng ta chỉ cần tìm ra cách sử dụng nó

Hãy quay lại mẫu -

    return render_template("index.html", count=School.query.count())
8 - và chỉnh sửa một chút

    return render_template("index.html", count=School.query.count())
2

Làm mới trang và ngạc nhiên

Làm cách nào để lấy dữ liệu html trong bình?

    return render_template("index.html", count=School.query.count())
9 cực kỳ giả tạo và giả tạo đó đã đi từ khía cạnh Python của mọi thứ sang khía cạnh HTML của mọi thứ mà không gặp quá nhiều khó khăn

Thứ

    return render_template("index.html", count=School.query.count())
40 đó không phải là HTML. Trước khi Flask gửi trang web tới trình duyệt của bạn, nó sẽ duyệt qua trang và tìm những thứ như
    return render_template("index.html", count=School.query.count())
40 và điền tên biến vào đó

Đây là một ngôn ngữ khuôn mẫu gọi là Jinja2. Nó có thể làm được nhiều việc hơn là điền vào chỗ trống, bao gồm các vòng lặp và tất cả các loại nội dung. Nó siêu hữu ích và là sự kết hợp kỳ lạ giữa không đau và đau. Bạn sẽ thích nó

Dấu ngoặc kép -

    return render_template("index.html", count=School.query.count())
42 - khá phổ biến trên các ngôn ngữ tạo khuôn mẫu khác nhau. Đôi khi bạn có thể nghe chúng được gọi là “ria mép”, nhờ có ria mép. js và các thanh điều khiển sau này. js. Chúng có thể trông giống với Jinja2, nhưng đừng để bị phân tâm. Chỉ cần nghĩ rằng "ôi ria mép chắc chắn ổn" và tiếp tục với cuộc sống

Con số 90 giả này đang giết chết tôi, vì vậy hãy điều chỉnh

    return render_template("index.html", count=School.query.count())
43 của chúng tôi để gửi số trường thực tế. Tôi sẽ phớt lờ một cách tàn nhẫn các tuyên bố của
    return render_template("index.html", count=School.query.count())
44 mà chúng tôi đã thêm trước đây (vui lòng nhận xét chúng. )

@app.route("/")
def hello():
    school_count = School.query.count()
    return render_template("index.html", count=school_count)

Làm cách nào để lấy dữ liệu html trong bình?

Đẹp. Tuyệt vời. Không thể tin được

Bạn có thể muốn thực hiện truy vấn ORM bên trong

@app.route("/")
def hello():
    school_count = School.query.count()
    return render_template("index.html", count=school_count)
8, như thế này

    return render_template("index.html", count=School.query.count())

Trong khi điều này hoạt động, nó có vẻ hơi lộn xộn với tôi. Việc lưu số đếm dưới dạng một biến khác sẽ không giết chết bất kỳ ai (tôi không nghĩ vậy) và nó có khả năng tổ chức tốt hơn nếu bạn gửi nhiều biến hơn vào mẫu

Trong khi “1640” khá xấu, “1.640” trông chắc chắn hơn một chút. Nếu chúng tôi muốn thêm dấu phẩy, chúng tôi có thể thực hiện theo một trong hai cách sau. Cách thứ hai có lẽ tốt hơn, nhưng cách thứ nhất sử dụng chuỗi f. Khủng hoảng, khủng hoảng

Làm cách nào để lấy dữ liệu html trong bình?

Ở cách thứ nhất, chúng ta thêm dấu phẩy trước nó vào mẫu

    return render_template("index.html", count=School.query.count())
4

Vì vậy, thay vì gửi số đếm thực tế tới mẫu, chúng tôi sẽ gửi phiên bản đẹp, có dấu phẩy. Nếu chúng ta đang làm toán theo khuôn mẫu thì đó là một ý tưởng tồi, nhưng… có lẽ nếu không thì cũng ổn thôi?

Một tùy chọn khác là thực hiện định dạng trong mẫu. Vì Jinja là một thứ của Python, nên bạn có thể làm những thứ Python bên trong

    return render_template("index.html", count=School.query.count())
42………ngoại trừ chuỗi f. Nếu chúng tôi muốn sử dụng định dạng chuỗi của Python, chúng tôi cần thực hiện với kiểu cũ hơn một chút

@app.route("/")
def hello():
    # ....ignoring the ORM practice ....
    return render_template("index.html")
4

Đây có lẽ là cách tốt hơn, vì bạn đang giữ nguyên các quy tắc định dạng cho đến chính xác khi bạn định dạng nó. Tuy nhiên, nếu bạn yêu thích f-string đến chết, nó có thể khiến bạn đau tim, vì vậy tôi nghĩ rằng tôi sẽ cho bạn một lựa chọn khác

Việc gửi một số nguyên duy nhất đến mẫu của chúng tôi khá dễ dàng, nhưng việc gửi cả đống thứ cũng vậy. Hãy gửi những trường mà chúng tôi đã tìm thấy, những trường từ mã ZIP 10466

@app.route("/")
def hello():
    # ....ignoring the ORM practice ....
    return render_template("index.html")
5

Việc thêm

    return render_template("index.html", count=School.query.count())
47 sẽ gửi một biến khác vào mẫu của chúng tôi. Trong mẫu, biến sẽ được gọi là
    return render_template("index.html", count=School.query.count())
48, nhưng nó sẽ có nội dung của biến
    return render_template("index.html", count=School.query.count())
49. Bây giờ tất cả những gì chúng ta cần làm là hiển thị chúng

Trong thế giới HTML, việc in chúng hơi khác so với khi chúng tôi thực hiện

    return render_template("index.html", count=School.query.count())
40. Bởi vì có bội số, chúng ta cần một vòng lặp. Các vòng lặp trong Jinja2 khác một cách hợp lý so với Python, nhưng bạn sẽ nắm được ý chính. Chúng tôi sẽ đặt những thứ này xuống gần cuối, thay thế Nhìn vào thứ này

@app.route("/")
def hello():
    school_count = School.query.count()
    return render_template("index.html", count=school_count)
0

Làm mới, và bạn nên đi. Nếu không, hãy đảm bảo rằng bạn khớp các tên biến -

    return render_template("index.html", count=School.query.count())
47 và
@app.route("/")
def hello():
    # ....ignoring the ORM practice ....
    return render_template("index.html")
42. Đồng thời kiểm tra xem bạn đã sử dụng
@app.route("/")
def hello():
    # ....ignoring the ORM practice ....
    return render_template("index.html")
43 thay vì
@app.route("/")
def hello():
    # ....ignoring the ORM practice ....
    return render_template("index.html")
44

Theo cách tương tự mà trong

    return render_template("index.html", count=School.query.count())
43, chúng tôi đã sử dụng trường học. SCHOOLNAME
@app.route("/")
def hello():
    # ....ignoring the ORM practice ....
    return render_template("index.html")
46SCHOOLNAME
@app.route("/")
def hello():
    # ....ignoring the ORM practice ....
    return render_template("index.html")
47render_template` bạn có thể tự do sử dụng ở khía cạnh HTML của mọi thứ

Hãy nhớ rằng SQLALchemy không giống như gấu trúc và bạn chỉ được sử dụng một mục tại một thời điểm.

@app.route("/")
def hello():
    # ....ignoring the ORM practice ....
    return render_template("index.html")
48 sẽ không cung cấp cho bạn tên của từng trường, bạn sẽ cần sử dụng một vòng lặp giống như một danh sách bình thường

Quay trở lại thời kỳ lịch sử khi lần đầu tiên chúng ta nói về ứng dụng web, chúng ta đã mô tả chúng như thế này

Thông thường, bạn kết thúc với một trang web được tạo tự động cho mọi mục trong cơ sở dữ liệu của mình - cho dù đó là bác sĩ, trường học hay công ty. Trang đó có thể liệt kê tất cả các loại dữ liệu ẩn trong cơ sở dữ liệu của bạn về bác sĩ, trường học hoặc công ty đó… nhưng ở dạng thân thiện dễ chịu, phù hợp với những người dị ứng với Excel và cộng sự

Khi bạn có những trang này - chúng tôi sẽ gọi chúng là các trang "hiển thị" hoặc "chi tiết" - chúng cần phải tồn tại ở một URL cụ thể. Nếu

@app.route("/")
def hello():
    # ....ignoring the ORM practice ....
    return render_template("index.html")
49 có danh sách các bang, bạn có thể nhấp vào một danh sách để được gửi đến trang chi tiết của từng bang tại một trong các địa chỉ sau

  • @app.route("/")
    def hello():
        # ....ignoring the ORM practice ....
        return render_template("index.html")
    50
  • @app.route("/")
    def hello():
        # ....ignoring the ORM practice ....
        return render_template("index.html")
    51
  • @app.route("/")
    def hello():
        # ....ignoring the ORM practice ....
        return render_template("index.html")
    52
  • @app.route("/")
    def hello():
        # ....ignoring the ORM practice ....
        return render_template("index.html")
    53

Phần nhỏ ở cuối -

@app.route("/")
def hello():
    # ....ignoring the ORM practice ....
    return render_template("index.html")
54 hoặc
@app.route("/")
def hello():
    # ....ignoring the ORM practice ....
    return render_template("index.html")
55 hoặc
@app.route("/")
def hello():
    # ....ignoring the ORM practice ....
    return render_template("index.html")
56, v.v. - được gọi là id hoặc sên. Nói một cách thực tế, sên là cách ứng dụng web tìm thấy trạng thái mà bạn quan tâm từ cơ sở dữ liệu

Chúng tôi có một số tùy chọn về những gì chúng tôi có thể sử dụng cho một con sên, nó chỉ cần là thứ gì đó duy nhất cho mỗi hàng trong tập dữ liệu của chúng tôi. Ví dụ, mỗi trường có một tên khác nhau. Nhưng nếu chúng tôi sử dụng tên trường học làm con sên, chúng tôi sẽ kết thúc với

@app.route("/")
def hello():
    # ....ignoring the ORM practice ....
    return render_template("index.html", count=90)
7

trông không thực sự chuyên nghiệp. Một cách dễ dàng là sử dụng bất cứ thứ gì mà

@app.route("/")
def hello():
    # ....ignoring the ORM practice ....
    return render_template("index.html")
57 có trong cơ sở dữ liệu của bạn - nó được đảm bảo là duy nhất, vì vậy mỗi hàng trong cơ sở dữ liệu của bạn có một hàng riêng biệt. Nó có thể không phải là hấp dẫn nhất, nhưng nó dễ dàng

Trong trường hợp của chúng tôi, chúng tôi đặt

@app.route("/")
def hello():
    # ....ignoring the ORM practice ....
    return render_template("index.html")
58 ở dòng cuối cùng của mô hình của chúng tôi

@app.route("/")
def hello():
    # ....ignoring the ORM practice ....
    return render_template("index.html", count=90)
0

Nào,

@app.route("/")
def hello():
    # ....ignoring the ORM practice ....
    return render_template("index.html")
59. Vì vậy, trường Riverdale mà chúng tôi đã đề cập ở trên sẽ được tìm thấy tại

@app.route("/")
def hello():
    # ....ignoring the ORM practice ....
    return render_template("index.html", count=90)
1

Cái nào đẹp hơn nhiều

Slug có thể là khóa chính, nhưng nó không nhất thiết phải là. Nó có thể là bất cứ điều gì độc đáo. Rất nhiều lần bạn sẽ lấy thứ gì đó là một chuỗi như “Riverdale Middle School” và chuyển đổi nó thành thứ gì đó thân thiện với URL, chẳng hạn như “riverdale-middle-school. ” Bạn sẽ lưu cái này vào một cột mới có tên là

@app.route("/")
def hello():
    school_count = School.query.count()
    return render_template("index.html", count=school_count)
00 và biến nó thành con sên của bạn

Để xây dựng trang chi tiết của chúng tôi, chúng tôi cần một tuyến đường mới. Đây sẽ là một lộ trình đặc biệt, vì phần cuối của URL có thể thay đổi -

@app.route("/")
def hello():
    school_count = School.query.count()
    return render_template("index.html", count=school_count)
01 là Riverdale, nhưng
@app.route("/")
def hello():
    school_count = School.query.count()
    return render_template("index.html", count=school_count)
02 là Public School 068. Để thực hiện điều này, chúng tôi thêm một biến vào tuyến đường của chúng tôi

@app.route("/")
def hello():
    # ....ignoring the ORM practice ....
    return render_template("index.html", count=90)
2

Bây giờ bất cứ điều gì có thể làm vào phần sau

@app.route("/")
def hello():
    school_count = School.query.count()
    return render_template("index.html", count=school_count)
03. Nếu chúng ta muốn tìm P. S. 68, chúng tôi sẽ kiểm tra http. //máy chủ cục bộ. 5000/trường học/X068. Và nó hoạt động

Làm cách nào để lấy dữ liệu html trong bình?

Nếu chúng ta muốn đi từng dòng một, chúng ta sẽ bắt đầu với lộ trình. Bất kỳ biến nào trong URL - và bạn có thể có một triệu. - được bao quanh bởi các dấu ngoặc nhọn. Các dấu ngoặc này không hiển thị trong URL, chúng chỉ có nghĩa là “sẽ có thứ khác ở đó. ”

@app.route("/")
def hello():
    # ....ignoring the ORM practice ....
    return render_template("index.html", count=90)
3

Khi chúng tôi tạo chức năng của mình, trước đây chúng tôi luôn sử dụng

@app.route("/")
def hello():
    school_count = School.query.count()
    return render_template("index.html", count=school_count)
04, nhưng bây giờ biến của chúng tôi hiển thị trong ngoặc đơn

@app.route("/")
def hello():
    # ....ignoring the ORM practice ....
    return render_template("index.html", count=90)
4

Sau đó, chúng tôi sử dụng con sên đó để lọc qua các trường (chẳng hạn như

@app.route("/")
def hello():
    school_count = School.query.count()
    return render_template("index.html", count=school_count)
05) và lấy kết quả đầu tiên

Bởi vì chúng tôi đã sử dụng

@app.route("/")
def hello():
    school_count = School.query.count()
    return render_template("index.html", count=school_count)
06 SQLAlchemy cung cấp cho chúng tôi một hàng mà chúng tôi có thể làm những việc như
@app.route("/")
def hello():
    school_count = School.query.count()
    return render_template("index.html", count=school_count)
07 trên đó. Thay vào đó, nếu chúng tôi yêu cầu
@app.route("/")
def hello():
    school_count = School.query.count()
    return render_template("index.html", count=school_count)
08, chúng tôi sẽ có một danh sách mà chúng tôi cần lặp lại (ngay cả khi chỉ có một kết quả. )

@app.route("/")
def hello():
    # ....ignoring the ORM practice ....
    return render_template("index.html", count=90)
5

Chúng tôi đã sử dụng

@app.route("/")
def hello():
    school_count = School.query.count()
    return render_template("index.html", count=school_count)
09 để in tên trường lên trang web, nhưng giờ đã đến lúc nâng cấp lên trang chi tiết chính thức

Trước khi chúng tôi tạo trang chi tiết thực tế của mình, hãy viết mã để sử dụng mẫu. Hơi ngược, nhưng cứ làm đi

Thay vì sử dụng

@app.route("/")
def hello():
    school_count = School.query.count()
    return render_template("index.html", count=school_count)
09 chỉ với
@app.route("/")
def hello():
    # ....ignoring the ORM practice ....
    return render_template("index.html", count=90)
71, chúng tôi sẽ yêu cầu nó gửi một mẫu mới. Chúng tôi sẽ gọi mẫu này là
@app.route("/")
def hello():
    # ....ignoring the ORM practice ....
    return render_template("index.html", count=90)
72 và gửi trường mà chúng tôi tìm thấy trong cơ sở dữ liệu, giống như chúng tôi đã gửi số lượng trường cho mẫu khác

@app.route("/")
def hello():
    # ....ignoring the ORM practice ....
    return render_template("index.html", count=90)
6

Chúng tôi đang thiếu

@app.route("/")
def hello():
    # ....ignoring the ORM practice ....
    return render_template("index.html", count=90)
72, nhưng chúng tôi có thể khắc phục điều đó. Tạo một tệp mới có tên là
@app.route("/")
def hello():
    # ....ignoring the ORM practice ....
    return render_template("index.html", count=90)
72 và dán đoạn mã sau vào đó

@app.route("/")
def hello():
    # ....ignoring the ORM practice ....
    return render_template("index.html", count=90)
7

Nhìn kìa. Chúng ta chỉ có thể sử dụng `{{ trường học. column_name }}`` ở bất kỳ đâu trên trang để điền thông tin chi tiết về trường học

Làm cách nào để lấy dữ liệu html trong bình?

Nhưng… bản thân văn bản hơi xấu, vì

@app.route("/")
def hello():
    # ....ignoring the ORM practice ....
    return render_template("index.html", count=90)
75 có vẻ hơi QUÁ MUỐN Hét lên theo sở thích của tôi. Tuy nhiên, vì mẫu Jinja2 của chúng tôi dựa trên Python, nên một giải pháp không còn xa nữa

Giống như chúng ta có thể thực hiện

@app.route("/")
def hello():
    # ....ignoring the ORM practice ....
    return render_template("index.html", count=90)
76 và
@app.route("/")
def hello():
    # ....ignoring the ORM practice ....
    return render_template("index.html", count=90)
77 trên một chuỗi để biến nó thành
@app.route("/")
def hello():
    # ....ignoring the ORM practice ....
    return render_template("index.html", count=90)
78 hoặc
@app.route("/")
def hello():
    # ....ignoring the ORM practice ....
    return render_template("index.html", count=90)
79, Python có một trình thao tác chuỗi thú vị khác có tên là
@app.route("/")
def hello():
    # ....ignoring the ORM practice ....
    return render_template("index.html", count=90)
00. Hãy thay đổi phần địa chỉ của chúng tôi để trông như thế này

@app.route("/")
def hello():
    # ....ignoring the ORM practice ....
    return render_template("index.html", count=90)
8

Bạn thậm chí có thể thay đổi

@app.route("/")
def hello():
    # ....ignoring the ORM practice ....
    return render_template("index.html", count=90)
71 theo cách tương tự. Bây giờ nó trông đẹp

Làm cách nào để lấy dữ liệu html trong bình?

Ngay bây giờ, bạn cần biết URL cụ thể của trường để kết thúc trên trang chi tiết. Nhưng ai có thời gian cho việc đó?. Tôi nghĩ rằng trang chủ của chúng tôi - tuyến đường

    return render_template("index.html", count=School.query.count())
0 của chúng tôi - nên liệt kê tất cả các trường và cũng bao gồm các liên kết đến từng trang chi tiết của họ. Nó đủ dễ dàng

Một liên kết trong HTML trông như thế này

@app.route("/")
def hello():
    # ....ignoring the ORM practice ....
    return render_template("index.html", count=90)
9

Hay đúng hơn, một loạt các liên kết trong một loạt các thẻ paragaph. Ngay bây giờ nếu bạn nhìn vào

@app.route("/")
def hello():
    # ....ignoring the ORM practice ....
    return render_template("index.html", count=90)
03, chúng tôi đang liệt kê các trường của chúng tôi theo cách gần như tương tự

    return render_template("index.html", count=School.query.count())
20

Nếu chúng tôi muốn thay đổi điều này thành các liên kết, chúng tôi cần điền vào chỗ trống với

@app.route("/")
def hello():
    # ....ignoring the ORM practice ....
    return render_template("index.html", count=90)
04, giống như chúng tôi đã làm với tên của trường

    return render_template("index.html", count=School.query.count())
21

Thuộc tính

@app.route("/")
def hello():
    # ....ignoring the ORM practice ....
    return render_template("index.html", count=90)
05 hiện thay đổi dựa trên trường bạn đang xem. Làm mới trang và xem tất cả các liên kết ngọt ngào đó. Nhấp vào bất kỳ trường nào và bạn sẽ có thể chuyển qua lại giữa danh sách trường và trang chi tiết trường

Làm cách nào để lấy dữ liệu html trong bình?

Nhưng ôi, đợi đã. Đây chỉ là các trường trong một mã ZIP nhất định. Nếu bạn muốn biến nó thành tất cả các trường, bạn cần mở

    return render_template("index.html", count=School.query.count())
43 và thay đổi một chút mã. Bên trong
@app.route("/")
def hello():
    school_count = School.query.count()
    return render_template("index.html", count=school_count)
04, chúng tôi đang tìm ra những trường học như thế này

    return render_template("index.html", count=School.query.count())
22

Thay vào đó, khi chúng ta nên làm một cái gì đó như thế này

    return render_template("index.html", count=School.query.count())
23

Và, vâng, gọi nó là

    return render_template("index.html", count=School.query.count())
49 không còn ý nghĩa gì nữa, vì vậy hãy đổi tên biến của chúng ta thành đơn giản là
    return render_template("index.html", count=School.query.count())
48

    return render_template("index.html", count=School.query.count())
24

Tuy nhiên, đó là một trang web LỚN mà chúng tôi có bây giờ. Sẽ có ý nghĩa hơn nếu chúng tôi có một vài trang web nhỏ hơn, những trang mà bạn có thể tìm thấy danh sách các trường học ở một quận/thành phố hoặc mã zip cụ thể (…mà chúng tôi vừa loại bỏ)

Làm cách nào để lấy dữ liệu html trong bình?

Nếu chúng ta nhìn vào tập dữ liệu, cột

@app.route("/")
def hello():
    # ....ignoring the ORM practice ....
    return render_template("index.html", count=90)
10 có vẻ là một nơi tốt để bắt đầu. Hãy xây dựng một tuyến đường mới có tên là
@app.route("/")
def hello():
    # ....ignoring the ORM practice ....
    return render_template("index.html", count=90)
10 để mọi người có thể duyệt đến
@app.route("/")
def hello():
    # ....ignoring the ORM practice ....
    return render_template("index.html", count=90)
12 và xem tất cả các trường ở Bronx (mặc dù hiện tại chúng tôi sẽ chỉ in số trường thay vì hiển thị danh sách)

    return render_template("index.html", count=School.query.count())
25

Hãy xem qua http. //máy chủ cục bộ. 5000/thành phố/BRONX và ngạc nhiên

Lưu ý rằng văn bản đếm trường học là một chuỗi f, không phải mẫu Jinja

Tôi… không thích URL đó. Chúng tôi thà có

@app.route("/")
def hello():
    # ....ignoring the ORM practice ....
    return render_template("index.html", count=90)
13 thay vì
@app.route("/")
def hello():
    # ....ignoring the ORM practice ....
    return render_template("index.html", count=90)
12, phải không? . Vì vậy, nếu bạn gõ
@app.route("/")
def hello():
    # ....ignoring the ORM practice ....
    return render_template("index.html", count=90)
15 hoặc
@app.route("/")
def hello():
    # ....ignoring the ORM practice ....
    return render_template("index.html", count=90)
16 hoặc
@app.route("/")
def hello():
    # ....ignoring the ORM practice ....
    return render_template("index.html", count=90)
17 hoặc bất cứ thứ gì thì nó sẽ luôn được dịch thành
@app.route("/")
def hello():
    # ....ignoring the ORM practice ....
    return render_template("index.html", count=90)
18 khi bạn tìm kiếm

    return render_template("index.html", count=School.query.count())
26

Đang xem http. //máy chủ cục bộ. 5000/thành phố/bronx là một trải nghiệm tuyệt vời hơn, phải không?

Bây giờ chúng tôi muốn hiển thị danh sách các trường, bạn có thể nghĩ rằng đã đến lúc chúng tôi tạo một mẫu khác. Nhưng nếu… chúng ta không cần làm điều đó thì sao?

Thông thường, bạn có một số mẫu và sử dụng lại chúng theo các tuyến khác nhau (hoặc “chế độ xem”). Hiển thị tất cả các trường trong một mã zip cụ thể và tất cả các trường trong một thành phố cụ thể và tất cả các trường nói chung thực tế là giống nhau, đó chỉ là một danh sách các trường

Hiện tại, mẫu

@app.route("/")
def hello():
    # ....ignoring the ORM practice ....
    return render_template("index.html", count=90)
03 của chúng tôi lấy một biến có tên là
    return render_template("index.html", count=School.query.count())
48 và hiển thị tất cả chúng. Điều gì sẽ xảy ra nếu chúng ta chỉ gửi các trường học cho thành phố này theo mẫu đó?

    return render_template("index.html", count=School.query.count())
27

Làm cách nào để lấy dữ liệu html trong bình?

Một sai lầm khủng khiếp. Chúng tôi đã không chuyển cho nó một biến

@app.route("/")
def hello():
    # ....ignoring the ORM practice ....
    return render_template("index.html", count=90)
21, vì vậy khi chúng tôi cố gắng thực hiện đoạn mã này

    return render_template("index.html", count=School.query.count())
28

nó hoảng sợ và hoảng loạn và tắt máy. Một cách khắc phục dễ dàng là điều chỉnh tuyến đường thành phố của chúng ta để gửi số lượng trường học đến mẫu - chúng ta không cần thực hiện

@app.route("/")
def hello():
    # ....ignoring the ORM practice ....
    return render_template("index.html", count=90)
22 hay bất cứ điều gì, chúng ta chỉ cần sử dụng một
@app.route("/")
def hello():
    # ....ignoring the ORM practice ....
    return render_template("index.html", count=90)
23 đơn giản

    return render_template("index.html", count=School.query.count())
29

Làm cách nào để lấy dữ liệu html trong bình?

hoan hô. Tốt hơn một chút, ngoại trừ http. //máy chủ cục bộ. 5000/city/brox lượt đọc Có 392 trường học ở thành phố New York. , khi chúng tôi chắc chắn chỉ đang cố gắng nhìn vào Bronx

Chúng tôi không cần một mẫu hoàn toàn mới cho điều đó - chúng tôi chỉ cần điều chỉnh từng mẫu để in ra nơi chúng tôi đang tìm kiếm và thay đổi chế độ xem của chúng tôi để gửi dữ liệu đó. Hãy gọi nó là

@app.route("/")
def hello():
    # ....ignoring the ORM practice ....
    return render_template("index.html", count=90)
24, và chỉ để nó là tên thành phố

@app.route("/")
def hello():
    school_count = School.query.count()
    return render_template("index.html", count=school_count)
0

Chúng tôi sẽ thực hiện một điều chỉnh nhỏ trong

@app.route("/")
def hello():
    # ....ignoring the ORM practice ....
    return render_template("index.html", count=90)
03 của mình để sử dụng biến mới

@app.route("/")
def hello():
    school_count = School.query.count()
    return render_template("index.html", count=school_count)
1

và chúng tôi hiện có Có 392 trường học ở Bronx trên đầu trang của chúng tôi. Nó cũng hoạt động cho Manhattan và Brooklyn.

Tuy nhiên, liên kết Đảo Staten là

@app.route("/")
def hello():
    # ....ignoring the ORM practice ....
    return render_template("index.html", count=90)
26, thật thô thiển và xấu xí. Sửa chữa nhỏ của chúng tôi sẽ là một bước bổ sung ngoài
@app.route("/")
def hello():
    # ....ignoring the ORM practice ....
    return render_template("index.html", count=90)
76 trên thành phố của chúng tôi trước khi chúng tôi tìm kiếm trong cơ sở dữ liệu - chúng tôi cũng sẽ thay thế tất cả
@app.route("/")
def hello():
    # ....ignoring the ORM practice ....
    return render_template("index.html", count=90)
28 bằng dấu cách

  1. Chúng tôi nhận được
    @app.route("/")
    def hello():
        # ....ignoring the ORM practice ....
        return render_template("index.html", count=90)
    29 từ URL
  2. @app.route("/")
    def hello():
        # ....ignoring the ORM practice ....
        return render_template("index.html", count=90)
    29 được thay thế dấu ‘-’ bằng ’ , tạo thành
    @app.route("/")
    def hello():
        # ....ignoring the ORM practice ....
        return render_template("index.html", count=90)
    31
  3. @app.route("/")
    def hello():
        # ....ignoring the ORM practice ....
        return render_template("index.html", count=90)
    31 được viết hoa thành
    @app.route("/")
    def hello():
        # ....ignoring the ORM practice ....
        return render_template("index.html", count=90)
    33
  4. @app.route("/")
    def hello():
        # ....ignoring the ORM practice ....
        return render_template("index.html", count=90)
    33 được tìm kiếm
@app.route("/")
def hello():
    school_count = School.query.count()
    return render_template("index.html", count=school_count)
2

Sắc đẹp. Thành công

Bạn có thể thử làm tất cả trong câu lệnh

@app.route("/")
def hello():
    # ....ignoring the ORM practice ....
    return render_template("index.html", count=90)
35, nhưng sau đó chúng ta sẽ thấy “Staten-Island” được in ra trên trang web. Hãy thử nếu bạn muốn

Và những gì về một tuyến đường cho mã zip? . CHÚNG TÔI sẽ chỉ tạo một tuyến đường có tên là

@app.route("/")
def hello():
    # ....ignoring the ORM practice ....
    return render_template("index.html", count=90)
36 và thực hiện chính xác điều tương tự - cùng một mẫu, chỉ với một bộ lọc khác

@app.route("/")
def hello():
    school_count = School.query.count()
    return render_template("index.html", count=school_count)
3

Nhìn kìa. Tất cả sáu giây để có được một cách hoàn toàn mới để duyệt qua các trường học

Trước khi tiếp tục, có một điều nhỏ mà chúng tôi cần khắc phục - lộ trình gốc của chúng tôi. Nếu bạn truy cập trang chủ của chúng tôi http. //máy chủ cục bộ. 5000/ chúng tôi nhận được một lỗi lớn 'vị trí' không xác định'

Điều này là do chúng tôi đã không gửi một vị trí từ tuyến gốc của mình, vì vậy mẫu sẽ hoảng loạn khi nhìn thấy cụm từ

@app.route("/")
def hello():
    # ....ignoring the ORM practice ....
    return render_template("index.html", count=90)
37 của chúng tôi

    return render_template("index.html", count=School.query.count())
43 hiện trông như thế này

@app.route("/")
def hello():
    school_count = School.query.count()
    return render_template("index.html", count=school_count)
4

Nếu chúng tôi không có biến mà chúng tôi đang chuyển vào, làm cách nào để chúng tôi nhận được một

@app.route("/")
def hello():
    # ....ignoring the ORM practice ....
    return render_template("index.html", count=90)
24 để cung cấp cho mẫu của mình? . Thay vì
@app.route("/")
def hello():
    # ....ignoring the ORM practice ....
    return render_template("index.html", count=90)
40, chúng ta chỉ cần nói
@app.route("/")
def hello():
    # ....ignoring the ORM practice ....
    return render_template("index.html", count=90)
41 và nó hoạt động tốt

Làm cách nào để lấy dữ liệu biểu mẫu HTML bằng Python?

Để đăng dữ liệu biểu mẫu HTML lên máy chủ ở định dạng được mã hóa URL bằng Python, bạn cần phải thực hiện yêu cầu HTTP POST tới máy chủ và cung cấp dữ liệu biểu mẫu HTML trong phần thân . Bạn cũng cần chỉ định loại dữ liệu bằng cách sử dụng Content-Type. tiêu đề yêu cầu ứng dụng/x-www-form-urlencoded. . You also need to specify the data type using the Content-Type: application/x-www-form-urlencoded request header.

Làm cách nào để gửi dữ liệu HTML tới Flask mà không cần biểu mẫu?

stringify(layout) sau đó vào. chính. py , thay thế layout = data bằng layout = request. args. lấy('dữ liệu') .

Flask hoạt động như thế nào với HTML?

Flask cung cấp hàm trợ giúp render_template() cho phép sử dụng công cụ tạo mẫu Jinja . Điều này sẽ làm cho việc quản lý HTML dễ dàng hơn nhiều bằng cách viết mã HTML của bạn vào. html cũng như sử dụng logic trong mã HTML của bạn.