2011-01-17 5 views
2

스 니펫을 장고에 어떻게 설치합니까? (특히 this)스 니펫 설치

나는 파일 /{project}/snippets/EnforceLoginMiddleware.py을하고 난

이 어떤 도움 감사 드리겠습니다 아무 소용 :(에 django snippets install 인터넷 검색뿐만 아니라 그것을로드 MIDDLEWARE_CLASSES 내부 순열의 수를 시도 :)

PS가 MIDDLEWARE_CLASSES에 새 항목을 리터로 할 것이다 당신의 예에서

답변

5

"snippets"는 Django의 특정 요소를 가리 키지 않으며, 단지 다음을 의미합니다. 여기에 사용할 코드가 있습니다. 이 경우에는 웹 요청 전후에 호출 될 특정 Django 모듈 인 미들웨어입니다.

필요 Read django docs 경우 난 그냥 파일에 모든

그런 다음에이 줄을 추가 (이 응용 프로그램은 INSTALLED_APPS에서 언급 주어진 모든 응용 프로그램 폴더 할 것) 메인 응용 프로그램 폴더에 middleware.py라고 붙여, 너무이 미들웨어를 사용 당신의 settings.py 파일 : 여기에 내가 파일을 넣어 응용 프로그램이 main라고

MIDDLEWARE_CLASSES = (
    #...all others middleware, on the last line, paste : 
    'main.middleware.EnforceLoginMiddleware', 
) 

참고, 당신은 다른 이름이 될 수 있습니다.

이 조각의 문서화 문자열을 읽을 것을 잊지 마십시오 :

당신은 당신의 조각은 조각이 존재하는 모듈 내에 있는지, 당신의 PYTHONPATH (sys.path에) 또는에 있는지 확인해야합니다
Middlware class which requires the user to be authenticated for all urls except 
those defined in PUBLIC_URLS in settings.py. PUBLIC_URLS should be a tuple of regular 
expresssions for the urls you want anonymous users to have access to. If PUBLIC_URLS 
is not defined, it falls back to LOGIN_URL or failing that '/accounts/login/'. 
Requests for urls not matching PUBLIC_URLS get redirected to LOGIN_URL with next set 
to original path of the unauthenticted request. 
Any urls statically served by django are excluded from this check. To enforce the same 
validation on these set SERVE_STATIC_TO_PUBLIC to False. 
+0

가 대단히 감사합니다 : 같은

미들웨어 클래스는 보일 것이다! – Sevenearths

1

을 (왜 조각의 설치에 대한 모든 문서 또는 예제를 찾을 수 없습니다. 어쩌면 난 그냥 나쁜 Google 직원 해요) '{project} .snippets.EnforceLoginMiddleware.EnforceLoginMiddleware'(프로젝트의 패키지 이름으로 대체)와 같은 ook.

스 니펫 폴더에도 __init__.py 파일이 있는지 확인하십시오.

P .: 그 이유는 아마도 장고의 공식 구성 요소에 대해서는 "스 니펫"과 같은 것이 없기 때문일 것입니다. 그것들은 보통 간단한 파이썬 코드 조각 들로서 다루어 져야합니다. Djangosnippets은 django 코드 (스 니펫이라고도 함)를 게시하고 공유 할 수있는 사이트입니다.

2

당신의 PYTHONPATH에.

이 경우 __init__.py 파일을 스 니펫 폴더에 추가하면 스 니펫 폴더가 모듈로 처리되므로 from snippets.EnforceLoginMiddleware import EnforceLoginMiddleware을 사용할 수 있습니다. 나는 이것이 당신이 놓치고있는 중요한 단계라고 생각합니다.

MIDDLEWARE_CLASSES = (..., 'snippets.EnforceLoginMiddleware.EnforceLoginMiddleware') 
+0

감사합니다. 여러분의 권리는 있지만 프로젝트 디렉토리의 루트에있는 메인'middleware.py' 파일에 모듈을 포함하기로 결정했습니다. 시스템 전체에 적용될 것이기 때문에 – Sevenearths

+1

@Sevenearths, 그것이 정확히 있어야 할 곳입니다. 처음에는 임의의 디렉토리에있는 파일을 포함시키는 방법을 찾는데 어려움이있었습니다. Groking 모듈과 PYTHONPATH는 처음에는 혼란 스러울 수 있습니다. –