TurboGears - Sự phụ thuộc

Dự án TurboGears chứa các thư mục sau:

  • Config - Nơi thiết lập và cấu hình dự án dựa vào

  • Controllers - Tất cả các bộ điều khiển dự án, logic của ứng dụng web

  • i018n - Các tệp dịch cho các ngôn ngữ được hỗ trợ

  • Lib - Các chức năng và lớp python tiện ích

  • Model - Mô hình cơ sở dữ liệu

  • Public Static Files - CSS, JavaScript và hình ảnh

  • Templates - Các mẫu do bộ điều khiển của chúng tôi hiển thị.

  • Tests - Bộ bài kiểm tra đã thực hiện.

  • Websetup - Các chức năng thực thi lúc thiết lập ứng dụng.

Cách cài đặt một dự án

Dự án này bây giờ cần được cài đặt. Asetup.pyđã được cung cấp trong thư mục cơ sở của dự án. Các phần phụ thuộc của dự án được cài đặt khi tập lệnh này được thực thi.

Python setup.py develop

Theo mặc định, các phần phụ thuộc sau được cài đặt tại thời điểm thiết lập dự án:

  • Beaker
  • Genshi
  • zope.sqlalchemy
  • sqlalchemy
  • alembic
  • repoze.who
  • tw2.forms
  • tgext.admin ≥ 0.6.1
  • WebHelpers2
  • babel

Sau khi cài đặt, hãy bắt đầu phục vụ dự án trên máy chủ phát triển bằng cách đưa ra lệnh sau trong shell:

Gearbox serve –reload –debug

Làm theo lệnh đã đề cập ở trên để phục vụ một dự án mẫu được tạo trước. Mởhttp://localhost:8080trong trình duyệt. Ứng dụng mẫu làm sẵn này giới thiệu ngắn gọn về bản thân khung TurboGears.

Trong dự án Xin chào này, bộ điều khiển mặc định được tạo trong thư mục bộ điều khiển như Hello/hello/controllers.root.py. Hãy để chúng tôimodify root.py với mã sau -

from hello.lib.base import BaseController
from tg import expose, flash

class RootController(BaseController):
   movie = MovieController()
   @expose()
   def index(self):
      return "<h1>Hello World</h1>"
		
   @expose()
   def _default(self, *args, **kw):
      return "This page is not ready"

Khi một ứng dụng làm việc cơ bản đã sẵn sàng, có thể thêm nhiều dạng xem hơn trong lớp bộ điều khiển. bên trongMycontroller lớp trên, một phương thức mới sayHello()được thêm vào. Các@expose() người trang trí đính kèm /sayHelloURL của nó. Hàm này được thiết kế để chấp nhận tên dưới dạng tham số từ URL.

Sau khi khởi động máy chủ thông qua lệnh 'phục vụ hộp số', http://localhost:8080. Thông báo Hello World sẽ được hiển thị trong trình duyệt, ngay cả khi các URL sau được nhập:

http://localhost:8080/

http://localhost:8080/index

Tất cả các URL này được ánh xạ tới RootController.index()phương pháp. Lớp này cũng có_default()phương thức sẽ được gọi, bất cứ khi nào một URL không được ánh xạ tới bất kỳ hàm cụ thể nào. Phản hồi với URL được ánh xạ tới một hàm bởi @expose () decorator.

Có thể gửi một tham số đến một hàm được hiển thị từ URL. Hàm sau đọc tham số tên từ URL.

@expose()
def sayHello(self, name):
   return '<h3>Hello %s</h3>' %name

Kết quả sau sẽ được hiển thị trong trình duyệt dưới dạng phản hồi cho URL: http://localhost:8080/?name=MVL

Hello MVL

TurboGears tự động ánh xạ các tham số URL thành các đối số của hàm. Lớp RootController của chúng tôi được kế thừa từ BaseController. Điều này được định nghĩa làbase.py bên trong lib folder ứng dụng.

Mã của nó như sau:

from tg import TGController, tmpl_context
from tg import request

__all__ = ['BaseController']

def __call__(self, environ, context):
   tmpl_context.identity = request.identity
   return TGController.__call__(self, environ, context)

TGController.__call__ gửi đến phương thức Controller mà yêu cầu được chuyển đến.