2012-04-09 1 views
5

저는 장고를 처음 접했고 Drupal에서 옮겼습니다.DB에 앱 관련 변수를 저장하는 장고 관용어가 있습니까?

Drupal에서는 DB에 저장된 모듈 수준 변수 (django의 "application"을 읽음)를 정의하고 Drupal의 "핵심 테이블"중 하나를 사용할 수 있습니다.

variable_set('mymodule_variablename', $value); 
variable_get('mymodule_variablename', $default_value); 
variable_del('mymodule_variablename'); 

코어가 제공하는 아이디어는 그것이 전체 "모듈 테이블"하나 개의 값을 저장하기를 인스턴스화하는 각 모듈 (응용 프로그램)을 가지고 이해하지 않을 것이라고, 그래서 : 관용구 뭔가 같은 것 공통 모듈은 모듈을 통해 공유됩니다. 장고의 내 초보자의 이해 자부합니다

는 장고는 이러한 기능이 부족하지만 - 그것은 일반적인 패턴이기 때문에 - 나는 일반/표준/숙어 방법이 있는지 SO 지역 사회에 검사를 설정하는 생각 django devs가이 문제를 해결하기 위해 사용합니다.

(BTW : 값은 설정 파일에 저장할 수있는 상수가 아니며 매일 새로 고쳐야하는 값이며 각 요청에서 읽어야합니다.)

답변

6

이를 달성하기 위해 애플 리케이션이 있습니다,하지만 난 그 짧은

ModelDict이 데이터베이스의 설정 같은 것들을 저장하는 매우 효율적인 방법이기 때문에, Disqus에에서 django-modeldict를 추천하고 싶습니다. 전체 모델은 캐시에 저장 될뿐만 아니라 (느슨하게) 사전으로 변환됩니다. (처리 중이며 CACHE_BACKEND 기반) 일 필요가있을 때만 무효화됩니다.

+0

저는 잠시 동안 이와 비슷한 것을 찾고 있습니다. 이것은 좋은 구현처럼 보입니다. Disqus에 대한 세 건배. –

+0

감사합니다. 청구서에 완벽하게 맞는 것 같습니다. :) – mac

2

정적이 아닌 데이터는 모델에 저장됩니다. 앱간에 데이터 또는 기능을 공유해야하는 경우 '공유'와 같은 공유 앱을 만드는 관례를 보았습니다. 이것은 공유 모델 또는 유틸리티 기능을 포함합니다.

django 프로젝트에서 나는 데이터가 보통 특정한 것을 보았다. 저장하는 데이터는 해당 데이터를 대표하는 모델에 있어야하며 내 데이터를 나타내는 명시적인 모델/개체와 차별화 된 다양한 데이터가 포함 된 일반 개체를 사용하는 것이 좋습니다.

매일 변경되는 하나 또는 두 개의 변수 만 정의하는 경우 memcached와 같은 키/값 저장소가 효과가 있습니까?

0

ModelDict의 경우 +1입니다. , 데이터베이스 응용 프로그램 구성 매개 변수를 저장하는 것을 의미하고 (오른쪽 권한) 관리자를 편집 할 수있는 좋은 백엔드를 노출하는 장점을 가지고있어

https://github.com/jazzband/django-constance

: 또 다른 잠재적 비슷한 솔루션은 장고 콘스탄스입니다 또한 기본 값을 처리하고있다 캐싱 등

편집 : '. 파이썬 방법'이 (그렇지 않은) 문서, 당신은 설정에게 동일하게 설정할 수 있습니다에서 분명하지 않다 경우

나는. 값으로 설정을 설정하려면, 당신은 콘스탄스 가져 오기 설정

설정에서

을한다.variable_name = value