2013-04-10 24 views
5

Tôi sử dụng yapps để tạo trình phân tích cú pháp cho ngôn ngữ LaTex-ish (ví dụ: dịch các công cụ như \begin{itemize} thành <ul> -Tags tương ứng) trong kim tự tháp. Một lệnh (ví dụ: \ref{SOMEID}) sẽ tạo tuyến đường qua cuộc gọi route_url (hoặc route_path) và chuyển id đó tới đó. Kể từ khi cuộc gọi này xảy ra sâu trong mã được tạo ra bởi yapps và ngữ pháp mà tôi đã xác định, tôi không thấy bất kỳ khả năng nào để truyền đối tượng yêu cầu đến nó.kim tự tháp: constructe route_url không có đối tượng yêu cầu

Có một số loại đối tượng yêu cầu toàn cầu không? Hoặc, vì tôi thấy trước rằng tôi không nên sử dụng nó, liệu có khả năng xây dựng một tuyến đường (phụ thuộc vào một tham số) mà không có một đối tượng yêu cầu không?

Trả lời

7

route_url yêu cầu cả yêu cầu và đăng ký (request.registry). Nó tạo ra các url liên quan đến yêu cầu, và nó truy cập danh sách tất cả các tuyến đường và các thiết lập khác từ registry. Do đó, bạn phải tạo yêu cầu giả với thông số bạn quan tâm. Ví dụ:

from pyramid.request import Request 

request = Request.blank('/', base_url='https://example.com/prefix') 
request.registry = config.registry 

Bây giờ bạn có thể lưu trữ yêu cầu này bất cứ nơi nào, nó là tốt để đi đại diện cho tất cả mọi thứ về trang web của bạn: tên máy/cổng (example.com:443), tiền tố ứng dụng của bạn được gắn ở (/prefix), chương trình uri (https).

Nếu bạn cần hiểu sâu hơn về mã của mình, bạn có thể làm cho nó trở thành toàn cầu hoặc đính kèm nó vào một số ngữ cảnh/đăng ký mà bạn có sẵn, nhưng những gì tôi đã trình bày là làm sao để yêu cầu bạn yêu cầu.

+0

cảm ơn bạn rất nhiều, tôi không biết chức năng trống. Tôi đã sử dụng 'get_current_registry()' từ 'pyramid.threadlocal' để lấy đăng ký và sau đó chỉ có thể gọi' route_path'. – born

Các vấn đề liên quan