2011-11-27 4 views
0

Django를 처음 사용했습니다. 저는 PHP, CodeIgniter에서 왔습니다. CodeIgniter에는 Helpers (우리가 프로젝트에서 사용하는 모든 기능) 개념이 있습니다. 모두에서Django - 내가 프로젝트 전체에서 사용하는 코드 조각을 구성하는 방법은 무엇입니까?

from django.db import models 
import unicodedata 


class JobsadsText(models.Model): 
    hash = models.TextField(primary_key=True) 
    site_name = models.TextField() 
    uri = models.TextField() 
    job_title = models.TextField() 
    job_description = models.TextField() 
    country_ad = models.TextField() 
    zone_ad = models.TextField() 
    location_ad = models.TextField() 
    date_inserted = models.DateTimeField() 
    class Meta: 
    db_table = u'jobsads_text' 
    managed = False 

    def get_absolute_url(self): 
    return "/frame/" + format_string_to_uri(self.zone_ad) + "/" + format_string_to_uri(self.location_ad) + "/" + format_string_to_uri(self.job_title) + ".html" 

    def ascii_job_title(self): 
    return strip_accents(self.job_title) 

    def ascii_job_description(self): 
    return strip_accents(self.job_description) 

    def ascii_country_ad(self): 
    return strip_accents(self.country_ad) 

    def ascii_zone_ad(self): 
    return strip_accents(self.zone_ad) 

    def ascii_location_ad(self): 
    return strip_accents(self.location_ad) 
    # Para poder pesquisar palavras sem acentos - END - 

    def __unicode__(self): 
    return self.job_title 


# H E L P E R S 
# Para remover acentos de palavras acentuadas 
def strip_accents(text, encoding='ASCII'): 
    return ''.join((c for c in unicodedata.normalize('NFD', unicode(text)) if unicodedata.category(c) != 'Mn')) 

''' 
Esta funcao formata uma string para poder ser usada num URI 
''' 
def format_string_to_uri(string): 
    # Para substituir os caracteres q nao sao permitidos no URL 
    replacements = {"(" : "(", ")" : ")", "!" : "-", "$" : "-", "?" : "-", ":" : "-", " " : "-", "," : "-", "&" : "-", "+" : "-", "-" : "-", "/" : "-", "." : "-", "*" : "-",} 
    return _strtr(_strip_accents(string).lower(), replacements) 

# Para substituir occorrencias num dicionario 
def _strtr(text, dic): 
    """ Replace in 'text' all occurences of any key in the given 
    dictionary by its corresponding value. Returns the new tring.""" 
    # http://code.activestate.com/recipes/81330/ 
    # Create a regular expression from the dictionary keys 
    import re 
    regex = re.compile("(%s)" % "|".join(map(re.escape, dic.keys()))) 
    # For each match, look-up corresponding value in dictionary 
    return regex.sub(lambda mo: str(dic[mo.string[mo.start():mo.end()]]), text) 

# Para remover acentos de palavras acentuadas 
def _strip_accents(text, encoding='ASCII'): 
    return ''.join((c for c in unicodedata.normalize('NFD', unicode(text)) if unicodedata.category(c) != 'Mn')) 

나는이 기능 (strip_accents, format_string_to_uri, _strtr, _strip_accents)를 사용 :이 models.py와 끝까지, 파이썬에 새로운 그리고 난이 일을하는 가장 좋은 방법을 모르는 프로젝트. 이 기능을 필 요한 모든 * .py 파일에이 기능을 작성하지 않은 방식으로이 기능을 구성하려면 어떻게해야합니까?

최고 감사합니다,

답변

0

협약이 전혀 재사용 할 수없는 몇 가지 응용 프로그램이 아니라 경우, 응용 프로그램에 utils.py 모듈을 만들고 거기 헬퍼 모두를 작성하는 것입니다, 뭔가를해야만 특별히에 맞게 조정하여 프로젝트는 컨벤션을 '코어'라고 부르며 여기에 코드를 추가하는 것입니다.

관련 문제