Django의 모든 라우팅 가져오기

1327 단어 Django
직접 부호:
from django.urls import RegexURLPattern

def get_all_urls(patterns, pre_fix, is_firt_time=False,result=[]):
    if is_firt_time:
        result.clear()

    for item in patterns:
        # print(item ,type(item))
        part = item._regex.strip('^$')
        if isinstance(item, RegexURLPattern):
            result.append(pre_fix + part)
        else:
            .get_all_urls( item.urlconf_name, pre_fix + part)

    return result

사용: get_all_urls(urlpatterns, pre_fix='/', is_firt_time=True)설명: 프로젝트의 urls.py에서urlpatterns의 모든 루트를 찾기;순환, 대상 유형을 판단하고 끼워 넣으면 유형이 다르다.item._regx에서 루트 이름 찾기;등급이 많은 루트는 외부 접두사를 끼워 넣기 때문에 연결이 필요하다.빈 목록이 함수로 참조될 때 값을 전달하지 않으면 목록의 메모리 주소가 변하지 않습니다.strip ('^$') 은 그 중 임의의 문자를 제거하고, 이 루트에 다시 접근하면 값이 중복됩니다. (목록 메모리 주소는 변하지 않습니다.)상태 판단 증가, 첫 번째 실행 시 비우기

좋은 웹페이지 즐겨찾기