2016-02-20 24 views
1

我想從網站廢料數據可以說例如SO什麼應該是正確的方式來存儲刮取的數據爲TextField

例如在SO我們寫一個文本編輯器內,但在後端它被存儲在一個文本字段適當HTML標記和渲染時需要。我面臨類似的情況,我不得不取消文本字段的數據,所以我的問題是如何在保存前應用格式。

我在想有一個樣本模板,並使用模板引擎Mako來填充上下文然後最後保存它。這是正確的方法嗎?也許有人可以分享他的經驗。

回答

0

如果您已經在使用django,爲什麼不使用框架模板?

假設你在你的模板目錄下有一個text_field_template.html,你可以在模型中的內容保存方法使其:

from django.template.loader import render_to_string 

class MyModel(models.Model): 

    the_text_field = models.TextField... 

    def save(self,context): 
     self.the_text_field = render_to_string(text_field_template.html,context) 
     super(MyModel,self).save() 

當然你也可以添加模板ARG,所以你save(context,template)

在「保存」方法中渲染模板會更好,因爲典型的數據庫活動的寫入次數少於讀取次數。如果您保存該字段一次,然後讀取10次或100次,則在保存時進行渲染是有意義的。

你可能有不同的使用情況:

  1. 如果上下文是基於當前和不斷變化的數據,這是僅當用戶閱讀領域,然後你拉的記錄時,必須進行渲染。

  2. 一個應用程序使用該字段一次,一個保存 - 一個讀取 - 一個刪除。如果您在保存或讀取時進行渲染,則無關緊要。

注意,從安全角度考慮,必須將其轉到DB之前什麼都逃不過。

+0

其實我關心的是方法。這是正確的方法,首先提取數據用提取的數據填充我自己的模板,然後保存? –

+0

更新了答案 –

+0

我將首先使用真棒'Scrapy框架'廢棄數據,然後使用刮取的數據呈現模板,然後將其傳遞到可以在'Django'文本字段中將其保存在管道中的項目字段。 –

相關問題