2010-03-17 44 views
12

Tôi đang cố gắng hiển thị mẫu django từ cơ sở dữ liệu bên ngoài cấu trúc yêu cầu phản hồi bình thường của djangos. Nhưng nó có vẻ là không tầm thường do cách django mẫu được biên dịch. Tôi muốn làm một việc như sau:Tải mẫu django từ cơ sở dữ liệu

>>> s = Template.objects.get(pk = 123).content 
>>> some_method_to_render(s, {'a' : 123, 'b' : 456}) 
>>> ... the rendered output here ... 

Bạn làm như thế nào?

+0

Tôi tự hỏi bạn sẽ cập nhật mẫu của mình như thế nào? Bạn sẽ phá vỡ khuôn khổ mô hình django MVC/T – gath

Trả lời

30

Không có gì phức tạp về điều này và không liên quan gì đến cấu trúc yêu cầu/phản hồi. Tất cả bạn cần làm là vượt qua các mẫu chuỗi vào django.template.Template constructor (BTW, tôi đã thay đổi tên của mô hình của bạn, để tránh nhầm lẫn):

from django.template import Context, Template 
from myapp.models import DbTemplate 

s = DbTemplate.objects.get(pk=123).content 
tpl = Template(s) 
tpl.render(Context(dict(a=123, b=456))) 
+0

Dòng thứ hai nên đọc "tpl = Mẫu (s)" –

+0

@Brian cảm ơn, đã thay đổi. –

+0

Hoàn hảo cảm ơn bạn. –

9

Có một ứng dụng tái sử dụng mà tải mẫu từ cơ sở dữ liệu :

http://django-dbtemplates.readthedocs.org/en/latest/

+0

Có vẻ như nó bị bỏ rơi, thật đáng buồn .. Phiên bản cuối cùng trong PyPI là từ năm 2012. – user1496984

+0

@ user1496984 - Nhưng hơn [GitHub] (https://github.com/jazzband/django-dbtemplates) nó đã được cập nhật 6 tháng trước. – Tony

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