guardian.conf.settings
λκ° λλ½λμκ±°λμ΄ μ€ μ΄ μμ΅λκΉ?
if ANONYMOUS_USER_NAME is None:
ANONYMOUS_USER_NAME = 'AnonymousUser'
ANONYMOUS_USER_NAMEμ Noneκ³Ό κ°μ μ μμΌλ―λ‘ μ ν μ¬νμ΄λΌλ μ¬μ€μ΄ 무ν¨νλ©λλ€. μ΄κ²μ΄ λ°λμ§νμ§ μμ κ² κ°μ΅λλ€.
건배
μ, λΉμ λ§μ΄ λ§μ΅λλ€. λͺ μ μ μΌλ‘ μμμΌλ‘ μ€μ λλ κ²μ λ°©μ§νμ§ μκ³ '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 : κ·Έλλ μμ μ μν΄!
κ°μ₯ μ μ©ν λκΈ
μ½λλ₯Ό λ€μκ³Ό κ°μ΄ λ³κ²½νλ©΄ μ΄λ»κ²λ©λκΉ? λ λμκ°μ? μ무κ²λ μ§μ λμ§ μμ κ²½μ° κΈ°λ³Έκ°μ μ€μ νκ³ λͺ μ μ μΌλ‘ μμμΌλ‘ μ€μ ν μ μμ΄μΌν©λλ€.