Django-guardian: ANONYMOUS_USER_NAME κ°’ μ—†μŒ

에 λ§Œλ“  2016λ…„ 03μ›” 09일  Β·  10μ½”λ©˜νŠΈ  Β·  좜처: django-guardian/django-guardian

guardian.conf.settings λ­”κ°€ λˆ„λ½λ˜μ—ˆκ±°λ‚˜μ΄ 쀄 이 μžˆμŠ΅λ‹ˆκΉŒ?

if ANONYMOUS_USER_NAME is None:
    ANONYMOUS_USER_NAME = 'AnonymousUser'

ANONYMOUS_USER_NAME은 Noneκ³Ό 같을 수 μ—†μœΌλ―€λ‘œ 선택 μ‚¬ν•­μ΄λΌλŠ” 사싀이 λ¬΄νš¨ν™”λ©λ‹ˆλ‹€. 이것이 λ°”λžŒμ§ν•˜μ§€ μ•Šμ€ 것 κ°™μŠ΅λ‹ˆλ‹€.

건배

κ°€μž₯ μœ μš©ν•œ λŒ“κΈ€

μ½”λ“œλ₯Ό λ‹€μŒκ³Ό 같이 λ³€κ²½ν•˜λ©΄ μ–΄λ–»κ²Œλ©λ‹ˆκΉŒ? 더 λ‚˜μ€κ°€μš”? 아무것도 μ§€μ •λ˜μ§€ μ•Šμ€ 경우 기본값을 μ„€μ •ν•˜κ³  λͺ…μ‹œ 적으둜 μ—†μŒμœΌλ‘œ μ„€μ •ν•  수 μžˆμ–΄μ•Όν•©λ‹ˆλ‹€.

try:
    ANONYMOUS_USER_NAME = settings.ANONYMOUS_USER_NAME
except AttributeError:
    try:
        ANONYMOUS_USER_NAME = settings.ANONYMOUS_DEFAULT_USERNAME_VALUE
        warnings.warn("The ANONYMOUS_DEFAULT_USERNAME_VALUE setting has been renamed to ANONYMOUS_USER_NAME.", DeprecationWarning)
    except AttributeError:
        ANONYMOUS_USER_NAME = "AnonymousUser"

λͺ¨λ“  10 λŒ“κΈ€

예, λ‹Ήμ‹  말이 λ§žμŠ΅λ‹ˆλ‹€. λͺ…μ‹œ 적으둜 μ—†μŒμœΌλ‘œ μ„€μ •λ˜λŠ” 것을 λ°©μ§€ν•˜μ§€ μ•Šκ³  'AnonymousUser'둜 기본값을 μ„€μ •ν•  μˆ˜μžˆλŠ” 방법이 ν•„μš”ν•©λ‹ˆλ‹€.

μ½”λ“œλ₯Ό λ‹€μŒκ³Ό 같이 λ³€κ²½ν•˜λ©΄ μ–΄λ–»κ²Œλ©λ‹ˆκΉŒ? 더 λ‚˜μ€κ°€μš”? 아무것도 μ§€μ •λ˜μ§€ μ•Šμ€ 경우 기본값을 μ„€μ •ν•˜κ³  λͺ…μ‹œ 적으둜 μ—†μŒμœΌλ‘œ μ„€μ •ν•  수 μžˆμ–΄μ•Όν•©λ‹ˆλ‹€.

try:
    ANONYMOUS_USER_NAME = settings.ANONYMOUS_USER_NAME
except AttributeError:
    try:
        ANONYMOUS_USER_NAME = settings.ANONYMOUS_DEFAULT_USERNAME_VALUE
        warnings.warn("The ANONYMOUS_DEFAULT_USERNAME_VALUE setting has been renamed to ANONYMOUS_USER_NAME.", DeprecationWarning)
    except AttributeError:
        ANONYMOUS_USER_NAME = "AnonymousUser"

λ‚΄κ°€ μ–ΈκΈ‰ ν•œ 두 쀄을 μ œκ±°ν•œλ‹€κ³  λ§ν•˜κ³  μ‹ΆμŠ΅λ‹ˆλ‹€.

ANONYMOUS_USER_NAME λŠ” μ‹€μ œλ‘œ USERNAME_FIELD μ΄λ―€λ‘œ ANONYMOUS_USER_NAME λŠ” 이메일 λ˜λŠ” 기타 λͺ¨λ“  것이 될 수 μžˆμŠ΅λ‹ˆλ‹€. λ”°λΌμ„œ 기본값을 "AnonymousUser" 둜 μ„€μ •ν•˜λ©΄ μ˜€ν•΄μ˜ μ†Œμ§€κ°€ μžˆμŠ΅λ‹ˆλ‹€. λ˜ν•œ ANONYMOUS_USER_ID κ°€ κΈ°λŠ₯을 νŠΈλ¦¬κ±°ν•˜κ³  ANONYMOUS_DEFAULT_USERNAME_VALUE κ°€ μ‚¬μš©μž μ΄λ¦„μœΌλ‘œ μ‚¬μš©λ˜μ—ˆμŠ΅λ‹ˆλ‹€. κ·ΈλŸ¬λ‚˜ 이제 그듀은 ν•˜λ‚˜μ˜ μ„€μ •μœΌλ‘œ ν•©λ³‘λ˜μ–΄ νŠΈλ¦¬κ±°μ™€ κ°€μΉ˜ μ—­ν• μ„ν•©λ‹ˆλ‹€. λ”°λΌμ„œ 기본값을 제곡 ν•  ν•„μš”κ°€ μ—†μŠ΅λ‹ˆλ‹€.

κ·Έλž˜μ„œ λ‚˜λŠ” λ‹€μŒμ„ 고수 ν•  κ²ƒμž…λ‹ˆλ‹€.

ANONYMOUS_USER_NAME = getattr(settings, 'ANONYMOUS_USER_NAME', None)

if ANONYMOUS_USER_NAME is None:
    ANONYMOUS_USER_NAME = getattr(settings, 'ANONYMOUS_DEFAULT_USERNAME_VALUE', None)
    if ANONYMOUS_USER_NAME is not None:
        warnings.warn("[...]", DeprecationWarning)

μ•žμ„œ μ–ΈκΈ‰ ν•œ 두 쀄을 μ œκ±°ν•©λ‹ˆλ‹€.

λ‚˜λŠ” try...except ꡬ문에 λŒ€ν•΄ μ—‡κ°ˆλ¦° 감정을 가지고 μžˆμŠ΅λ‹ˆλ‹€. 진싀은 숫자의 λ¬Έμ œλŠ” μ•„λ‹ˆμ§€λ§Œ 섀정에 μ‚¬μš©λ˜λŠ” 것을 λ³Έ 적이 μ—†κΈ° λ•Œλ¬Έμž…λ‹ˆλ‹€. 고전적인 <SETTING_NAME> = getattr(settings, "<SETTING_NAME>", <default_value>) 보톡 κ½€ 잘 μž‘λ™ν•©λ‹ˆλ‹€.

ANONYMOUS_USER_NAME에 λŒ€ν•œ 기본값을 μ œκ³΅ν•˜μ§€ μ•ŠμœΌλ©΄ 기본값이 제곡 될 것이라고 κ°€μ •ν•˜λŠ” κΈ°μ‘΄ μ• ν”Œλ¦¬μΌ€μ΄μ…˜μ΄ μ€‘λ‹¨λ©λ‹ˆλ‹€. 즉, ANONYMOUS_USER_NAME 섀정이 μ§€μ •λ˜μ§€ μ•Šμ€ 경우의 λ™μž‘μ„ λ³€κ²½ν–ˆμŠ΅λ‹ˆλ‹€.

κ·Έλ ‡λ‹€λ©΄ 1.5.0으둜 μΆ©λŒν•˜μ—¬ ANONYMOUS_DEFAULT_USERNAME_VALUE 및 기본값을 μ œκ±°ν•˜κ³  λ³€κ²½ 사항을 κ²½κ³ ν•˜λŠ” 것은 μ–΄λ–»μŠ΅λ‹ˆκΉŒ?

읡λͺ…μ˜ μ‚¬μš©μžλ₯Ό μžλ™μœΌλ‘œ μƒμ„±ν•˜μ§€ μ•Šκ³  Django Guardian을 μ‹€ν–‰ν•  수 μžˆλ„λ‘ ν—ˆμš©ν•˜λ €λŠ” μ˜λ„λΌκ³  μƒκ°ν•©λ‹ˆλ‹€. 이것에 λŒ€ν•œ μ‚¬μš© 사둀가 μžˆμŠ΅λ‹ˆκΉŒ? μ›ν•˜μ§€ μ•ŠλŠ” 경우 읡λͺ… μ‚¬μš©μžλ₯Ό λ¬΄μ‹œν•˜μ§€ μ•ŠλŠ” μ΄μœ λŠ” λ¬΄μ—‡μž…λ‹ˆκΉŒ?

기본적으둜 읡λͺ… μ‚¬μš©μžλ₯Ό λ§Œλ“œλŠ” 것은 쒋은 일이라고 μƒκ°ν•©λ‹ˆλ‹€.이 값을 λ³€κ²½ν•΄μ•Όν•˜λŠ” 이유λ₯Ό μ•Œ 수 μ—†μŠ΅λ‹ˆλ‹€. κ·ΈλŸ¬λ‚˜ 이것이 μž‘λ™ν•˜λ €λ©΄ κΈ°λ³Έκ°’ ANONYMOUS_USER_NAME 이 ν•„μš”ν•©λ‹ˆλ‹€. 기본값이 μ‘μš© ν”„λ‘œκ·Έλž¨μ— μ ν•©ν•˜μ§€ μ•Šμ€ 경우 μ–Έμ œλ“ μ§€ λ³€κ²½ν•  수 μžˆμŠ΅λ‹ˆλ‹€.

try ... except ꡬ문은 "이 섀정이 μ œκ³΅λ˜μ§€ μ•Šμ•˜μŠ΅λ‹ˆκΉŒ?"의 λŒ€μ†Œ 문자λ₯Ό ꡬ뢄할 수 있기 λ•Œλ¬Έμ— μ’‹μŠ΅λ‹ˆλ‹€. 및 "이 섀정에 null 값이 지정 λ˜μ—ˆμŠ΅λ‹ˆκΉŒ?" -이λ₯Ό μœ„ν•΄ getattr을 μ‚¬μš©ν•  수 μžˆμ§€λ§Œ, 특히 DeprecationWarning을 μœ μ§€ν•˜λ €λŠ” 경우이 μž‘μ—…μ΄ λ‹€μ†Œ λΉ λ₯΄κ²Œ λ³΅μž‘ν•΄μ§ˆ 수 μžˆμŒμ„ λ°œκ²¬ν–ˆμŠ΅λ‹ˆλ‹€. "진싀은 숫자의 λ¬Έμ œκ°€ μ•„λ‹ˆμ§€λ§Œ"κ°€ 무슨 λœ»μΈμ§€ 잘 λͺ¨λ₯΄κ² μŠ΅λ‹ˆλ‹€.

λ‚΄κ°€ μ˜λ―Έν•˜λŠ” λ°”λŠ” λͺ¨λ“  μ‚¬λžŒμ΄ 옳고 / 더 λ‚˜μ€ 방법을 ν•œ κ°€μ§€ν•˜κΈ° λ•Œλ¬Έμ΄ μ•„λ‹ˆλΌλŠ” κ²ƒμž…λ‹ˆλ‹€.

읡λͺ… μ‚¬μš©μž 생성을 κ°•μ œν•˜λŠ” 것이 방법이 될 수 μžˆμ§€λ§Œ λ¬Έμ„œλ₯Ό μ—…λ°μ΄νŠΈν•΄μ•Όν•©λ‹ˆλ‹€.

λ‚΄ 상황과 κ΄€λ ¨ν•˜μ—¬ 이메일 ν•„λ“œλ₯Ό κΈ°λ³Έ USERNAME_FIELD둜 μ‚¬μš©ν•˜κ³  μžˆμœΌλ―€λ‘œ μ²˜μŒμ—λŠ” 읡λͺ… μ‚¬μš©μž μΈμŠ€ν„΄μŠ€λ₯Ό λ§Œλ“œλŠ” 것을 κΊΌλ¦½λ‹ˆλ‹€. ν•˜μ§€λ§Œ 관리 ν•  수 β€‹β€‹μžˆμŠ΅λ‹ˆλ‹€.

건배. 그리고 λ‹Ήμ‹ μ˜ 물건을 νŒŒμ‚°ν•˜κ²Œ ν•΄μ£Όμ…”μ„œ κ°μ‚¬ν•©λ‹ˆλ‹€.

μ—¬λŸ¬λΆ„, μ €λŠ” 읡λͺ…μ˜ μ‚¬μš©μž 생성을 μš”κ΅¬ν•˜λŠ” 것이 쒋은 생각이라고 μƒκ°ν•˜μ§€ μ•ŠμŠ΅λ‹ˆλ‹€. μ˜€λž«λ™μ•ˆ django-guardian λ₯Ό μ‚¬μš©ν•΄ μ™”μœΌλ©° 읡λͺ… μ‚¬μš©μžκ°€ ν•„μš”ν•˜μ§€ μ•Šμ€λ° μ§€κΈˆ λ³€κ²½ν•΄μ•Όν•˜λŠ” μ΄μœ λŠ” λ¬΄μ—‡μž…λ‹ˆκΉŒ?

κ·Έλž˜μ„œ try ... except 와 κ΄€λ ¨λœ λ‚΄ μ†”λ£¨μ…˜μ—λŠ” 2 개의 엄지 손가락이 μ£Όμ–΄μ‘Œμ§€λ§Œμ΄ μ†”λ£¨μ…˜μ„ μ •λ‹Ήν™”ν•˜λŠ” κ³³μ—μ„œλŠ” 2 개의 엄지 손가락을 λ°›μ•˜μŠ΅λ‹ˆλ‹€. ν˜Όλž€ μŠ€λŸ½μŠ΅λ‹ˆλ‹€. μ €λŠ” μ‹€μ œλ‘œ μ–΄λ–€ 단점도 보지 μ•Šκ³  이것이 μƒˆλ‘œμš΄ νšŒκ·€λ₯Ό μΆ”κ°€ν•˜μ§€ μ•Šκ³  νšŒκ·€λ₯Ό ν•΄κ²°ν•˜λŠ” κ°€μž₯ κ°„λ‹¨ν•œ 방법이라고 λ―ΏκΈ° λ•Œλ¬Έμ—μ΄ μ†”λ£¨μ…˜μ„ 적용 ν•  κ²ƒμž…λ‹ˆλ‹€.

@brianmay ν˜Όλž€μ— λŒ€ν•΄ μ£„μ†‘ν•©λ‹ˆλ‹€. : +1 : κ·Έλž˜λ„ μˆ˜μ •μ„ μœ„ν•΄!

이 νŽ˜μ΄μ§€κ°€ 도움이 λ˜μ—ˆλ‚˜μš”?
0 / 5 - 0 λ“±κΈ‰