2012-07-14 57 views
0

我有一個自定義模板標籤來替換空格,製表符,換行符,!,@,#,$,%,&,(,),。,與前圍:正則表達式只適用於顯式給定unicode字符串不在模型的unicode字段

re.sub('[,@#$%&_.?!\t\n ]+', '-', value) 

這工作得很好,當我給value parameter explicitly

re.sub('[,@#$%&_.?!\t\n ]+', '-', 'نمونه کد') 

或:

value='نمونه کد' 
re.sub('[,@#$%&_.?!\t\n ]+', '-', value) 

但在TEM片時我想使用這個標籤上的對象列表的subject場不correctely工作,只是替換空間與前圍:

{% for n in news %} 
    <a href="{% url CompanyHub.views.getNews n.subject|custom_unicode_slugify,n.pk %}" >{{n.description|safe|truncatewords_html:15}}</a> 
{% endfor %} 

這是我custome模板標籤:

def custom_unicode_slugify(value): 
    return re.sub('[,@#$%&_.?!\t\n ]+', '-', value) 

register.filter('custom_unicode_slugify', custom_unicode_slugify) 

我tryed使用這個標籤沒有n|custom_unicode_slugify代替n.subject|custom_unicode_slugify,因爲我的模型__unicode__()方法返回subject field,但我得到這個錯誤:

Caught TypeError while rendering: expected string or buffer 

回答

0

我終於想出了這個解決方案:使用 模板標籤unicode method不會立即執行的時候,所以我在models.py definded unicode subject除了__unicode__

def __unicode__(self): 
    return self.subject 
def unicode_subject(self): 
    return unicode(self.subject) 

模板:

<a href="{% url CompanyHub.views.DocDetails doc.unicode_subject|custom_unicode_slugify,doc.pk %}">{{doc.content}}</a> 
相關問題