문제

페이지를 열 때마다 현재 활성 프로젝트 ID를 얻고 싶습니다.하위 도메인을 확인하고 현재 로그인한 사용자가 해당 도메인을 볼 수 있는지 확인하면 됩니다.

내 시야에 도달하면 할 수 있기를 원합니다.

tasks = Task.objects.filter(project = current_project)

여기서 current_project(또는 CURRENT_PROJECT 또는 현재_프로젝트 ???)는 이미 설정되어 있습니다.

내가 문서에서 찾은 다양한 접근 방식의 장단점을 설명하고 올바른 방향으로 안내할 수 있는 사람이 있나요?

  1. 세션
  2. 미들웨어
  3. 스레딩
  4. 내장

결국 내가 한 방법은 다음과 같습니다.

데코레이터:

def check4project(fn):

    current_project = 'fred'
    def check(*args, **kw):
        kw['project']=current_project
        return fn(*args, **kw)
    return check

예시 보기

@login_required
@check4project
@tweetpost
def index(request, project=0):

    print project
도움이 되었습니까?

해결책

그것은 모두 "현재 프로젝트"의 의미가 무엇인지에 따라 다릅니다.다음은 몇 가지 가능성입니다.

  1. 이는 사용자의 특성일 수 있습니다.그는 자신의 프로필 페이지를 방문하여 현재 프로젝트를 설정합니다.이는 데이터베이스에 저장되며 ORM을 통해 액세스합니다.

  2. 이는 하위 도메인만을 기반으로 하는 URL의 특성일 수 있습니다.이는 요청에 액세스할 수 있는 미들웨어를 사용하여 수행할 수 있으며, 예를 들어 호스트 이름을 구문 분석하고 보기 기능에서 액세스할 수 있는 요청에 대한 사용자 정의 속성을 설정할 수 있습니다.

  3. #2와 유사하게, 일부 뷰에 대해 프로젝트 확인이 완료되었지만 전체가 아닌 경우 뷰 데코레이터를 사용할 수 있습니다.이는 승인을 확인하는 Django의 데코레이터와 유사합니다.

  4. 이는 사용자의 사이트 방문의 특징일 수 있습니다.그는 프로젝트 페이지를 방문하여 작업할 프로젝트를 선택하고 다른 프로젝트를 선택할 때까지 계속 유지됩니다.이는 특히 이러한 종류의 임시 저장소를 위한 세션에 저장되는 것이 가장 좋습니다.

귀하의 설명에 따르면 하위 프로젝트에 관심을 갖는 것과 그렇지 않은 것 사이에서 귀하의 견해가 어떻게 나뉘는지에 따라 #2 또는 #3이 귀하에게 가장 적합한 것 같습니다.

다른 팁

context_processor를 만든 다음 요청 개체에서 값을 가져올 수 있습니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top