Django-guardian: "์ž˜๋ชป ๊ตฌ์„ฑ๋จ: AUTH_USER_MODEL์€ ์„ค์น˜๋˜์ง€ ์•Š์€ 'auth.User' ๋ชจ๋ธ์„ ๋‚˜ํƒ€๋ƒ…๋‹ˆ๋‹ค."

์— ๋งŒ๋“  2014๋…„ 02์›” 12์ผ  ยท  2์ฝ”๋ฉ˜ํŠธ  ยท  ์ถœ์ฒ˜: django-guardian/django-guardian

์•ˆ๋…•ํ•˜์„ธ์š”,

์ œ๊ฐ€ ์—ฌ๊ธฐ์„œ ๋ญ”๊ฐ€ ์ž˜๋ชปํ•˜๊ณ  ์žˆ๋Š” ๊ฒƒ ๊ฐ™์œผ๋‹ˆ ๋ฏธ๋ฆฌ ์‚ฌ๊ณผ๋“œ๋ฆฝ๋‹ˆ๋‹ค!

์„ค๋ช…์„œ์˜ ์„ค์น˜ ๋ฐ ๊ตฌ์„ฑ ๋‹จ๊ณ„๋ฅผ ๋”ฐ๋ž์Šต๋‹ˆ๋‹ค. "์ž˜๋ชป ๊ตฌ์„ฑ๋จ: AUTH_USER_MODEL์ด ์„ค์น˜๋˜์ง€ ์•Š์€ 'auth.User' ๋ชจ๋ธ์„ ์ฐธ์กฐํ•จ"์œผ๋กœ ๊ถŒํ•œ์„ ํ• ๋‹นํ•˜๋Š” ๋ฐ ์‹คํŒจํ•ฉ๋‹ˆ๋‹ค.

๊ด€๋ จ Django ๋ฌธ์„œ๋ฅผ ์ฝ๊ณ  ์‚ฌ์šฉ์ž ์ง€์ • ์‚ฌ์šฉ์ž ๋ชจ๋ธ์„ ์‚ฌ์šฉํ•  ๋•Œ AUTH_USER_MODEL ์„ค์ •์ด "app_label.UserModel" ํ˜•์‹์„ ์‚ฌ์šฉํ•œ๋‹ค๋Š” ๊ฒƒ์„ ์ดํ•ดํ–ˆ์Šต๋‹ˆ๋‹ค. ์‚ฌ์šฉ์ž ์ง€์ • ์‚ฌ์šฉ์ž ๋ชจ๋ธ์„ ์‚ฌ์šฉํ•˜์ง€ ์•Š๊ณ  ๊ธฐ๋ณธ django ๋ชจ๋ธ์„ ์‚ฌ์šฉํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.

์ธํ„ฐ๋„ท์—์„œ ์ฐพ์€ ๋ชจ๋“  ๋ฌธ์ œ์™€ ์†”๋ฃจ์…˜์€ ๋‚˜์—๊ฒŒ ์ ์šฉ๋˜์ง€ ์•Š๋Š” ์‚ฌ์šฉ์ž ์ง€์ • ์‚ฌ์šฉ์ž ๋ชจ๋ธ๊ณผ ๊ด€๋ จ์ด ์žˆ์Šต๋‹ˆ๋‹ค.

์ €๋Š” django 1.6.1๊ณผ django-guardian 1.1.1์„ ์‚ฌ์šฉํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.

๋‚˜๋Š” settings.AUTH_USER_MODEL = 'guardian.User'๋ฅผ ์•„๋ฌด ์†Œ์šฉ์œผ๋กœ ์„ค์ •ํ•˜๋ ค๊ณ  ์‹œ๋„ํ–ˆ์Šต๋‹ˆ๋‹ค.

๋„์›€์„ ์ฃผ์‹œ๋ฉด ๊ฐ์‚ฌํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค!

๊ฑด๋ฐฐ

์ด๊ฒƒ์€ ์ •ํ™•ํ•œ ๋‹จ๊ณ„์ž…๋‹ˆ๋‹ค(๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ๊ตฌ์„ฑ์„ ์„ค์ •ํ•œ ํ›„ ์—ฌ๊ธฐ์—์„œ ๊ธฐ๋ณธ django ๊ถŒํ•œ์„ ์‚ฌ์šฉํ•˜๊ณ  ์žˆ์ง€๋งŒ ๋ชจ๋ธ์˜ ๋ฉ”ํƒ€ ํด๋ž˜์Šค์— ์ •์˜๋œ ๊ถŒํ•œ๊ณผ ๋™์ผํ•œ ๊ฒฐ๊ณผ๋ฅผ ์–ป์Œ)

django.contrib.auth.models์—์„œ ์‚ฌ์šฉ์ž ๊ฐ€์ ธ์˜ค๊ธฐ
john = User.objects.get(id=2)
๋‚จ์ž

mtm.models์—์„œ ๊ฐ€์ ธ์˜ค๊ธฐ ๊ณต์œ 
obj = Sharing.objects.get(id=1)
์˜ค๋ธŒ์ œ

john.has_perm('mtm.change_sharing', obj)
๊ฑฐ์ง“
Guardian.shortcuts์—์„œ import assign_perm
assign_perm('mtm.change_sharing', john, obj)
์—ญ์ถ”์ (๊ฐ€์žฅ ์ตœ๊ทผ ํ˜ธ์ถœ ๋งˆ์ง€๋ง‰):
ํŒŒ์ผ "", 1ํ–‰, ์—์„œ
assign_perm('mtm.change_sharing', john, obj)
assign_perm์—์„œ ํŒŒ์ผ "/usr/local/lib/python2.7/dist-packages/guardian/shortcuts.py", 71ํ–‰
์‚ฌ์šฉ์ž, ๊ทธ๋ฃน = get_identity(user_or_group)
get_identity์—์„œ ํŒŒ์ผ "/usr/local/lib/python2.7/dist-packages/guardian/utils.py", 73ํ–‰
isinstance(identity, get_user_model())์ธ ๊ฒฝ์šฐ:
get_user_model์—์„œ ํŒŒ์ผ "/usr/local/lib/python2.7/dist-packages/django/contrib/auth/ ์ดˆ๊ธฐํ™” ํ‰", ๋ผ์ธ (129)
raise ImperlyConfigured("AUTH_USER_MODEL์€ ์„ค์น˜๋˜์ง€ ์•Š์€ ๋ชจ๋ธ '%s'์„(๋ฅผ) ์ฐธ์กฐํ•ฉ๋‹ˆ๋‹ค." % settings.AUTH_USER_MODEL)
๋ถ€์ ์ ˆํ•œ ๊ตฌ์„ฑ: AUTH_USER_MODEL์€ ์„ค์น˜๋˜์ง€ ์•Š์€ 'auth.User' ๋ชจ๋ธ์„ ๋‚˜ํƒ€๋ƒ…๋‹ˆ๋‹ค.

๋ชจ๋“  2 ๋Œ“๊ธ€

South๋ฅผ ์„ค์น˜ํ•˜๊ณ  manage.py migrate๋ฅผ ์‹คํ–‰ํ•˜์—ฌ ์ˆ˜์ •ํ–ˆ์Šต๋‹ˆ๋‹ค. ์ด๊ฒƒ์ด ๋‚ด ์„ค์ •์—๋งŒ ํ•ด๋‹น๋˜๋Š”์ง€ ๋ชจ๋ฅด๊ฒ ์Šต๋‹ˆ๋‹ค. ๊ทธ๋ ‡์ง€ ์•Š์€ ๊ฒฝ์šฐ ๊ตฌ์„ฑ ๊ฐ€์ด๋“œ๋ฅผ ์—…๋ฐ์ดํŠธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๊ฑด๋ฐฐ!

์ด ์˜ค๋ฅ˜์˜ ๊ฐ€์žฅ ์ผ๋ฐ˜์ ์ธ ์ด์œ :
INSTALLED_APPS ๋Œ€์‹  MIDDLEWARE์—์„œ ์‹ค์ˆ˜๋กœ ์•ฑ ์ด๋ฆ„์„ ์–ธ๊ธ‰ํ•œ ๊ฒฝ์šฐ settings.py ํŒŒ์ผ๋กœ ์ด๋™ํ•˜์—ฌ ์ด ๋ฌธ์ œ๋ฅผ ํ™•์ธํ•˜์„ธ์š”.

์ด ํŽ˜์ด์ง€๊ฐ€ ๋„์›€์ด ๋˜์—ˆ๋‚˜์š”?
0 / 5 - 0 ๋“ฑ๊ธ‰