ã¿ãªããããã«ã¡ã¯ïŒ
DjangoããŒã¹ã®ãããžã§ã¯ãã§ã¯ãç°ãªããŠãŒã¶ãŒãåãã¢ãã«å
ã®åã
ã®ãªããžã§ã¯ãã«ã¢ã¯ã»ã¹ã§ããªãå ŽåããŸãã¯ãã®éã®å Žåãã¬ã³ãŒãïŒãªããžã§ã¯ãïŒã®ã¬ãã«ã§æè»ãªã¢ã¯ã»ã¹å¶åŸ¡ã䜿çšããããšããããããŸãã
ç§ãã¡ã®ãããžã§ã¯ãã§å¿
èŠãªããŒã¿ã¢ã¯ã»ã¹ããªã·ãŒãé©åãªæ¢è£œã®ã·ã¹ãã ããªãã£ãçç±ãã¬ã³ãŒãã¬ãã«ã§ã®æ°ããã¢ã¯ã»ã¹å¶åŸ¡ã·ã¹ãã ãã©ã®ããã«ç»å Žããããæ£ç¢ºã«èª¬æããããšæããŸãã
æã现å¿ã®æ³šæãæãããã«ãã·ã¹ãã ããã€ã¹ããã®å
éšããžãã¯ãããã³ãã®åŠçæ¹æ³ã®è©³çްã以äžã«ç€ºããŸãã
åŸ
ãŠãªã人ã®ããã«
Django-Accessãããžã§ã¯ã
æ¢åã®ã·ã¹ãã
ãžã£ã³ã¬ã«ã¯ãã§ã«ããã€ãã®ãšã³ããªãŒã¬ãã«ã®ã¢ã¯ã»ã¹å¶åŸ¡ã·ã¹ãã ããããŸãã æãæåã§å®å®ããã·ã¹ãã ã¯Django-GuardianãšDjango-Authorityã§ãã
ãžã£ã³ãŽä¿è·è
æåã®ã·ã¹ãã ã§ããDjango-Guardianã§ã¯ããŠãŒã¶ãŒãšãŠãŒã¶ãŒã察話ã§ãããªããžã§ã¯ããšã®éã«ãåãªãã®é¢ä¿ïŒã€ãŸããããŒã¿ããŒã¹å
ã®ã¬ã³ãŒãïŒãäœæããå¿
èŠããããŸãã ãŠãŒã¶ãŒãšãªããžã§ã¯ãã®åãã¢ã«ã¯ããã®ãããªåå¥ã®æš©å©ã¬ã³ãŒããå¿
èŠã§ãã ããŒã¿ããŒã¹å
ã®ãããã®ã¬ã³ãŒãã®æ°ã¯ããã®ãããªã·ã¹ãã ã§ã¢ã¯ã»ã¹æš©ãèŠå¶ãããŠãããŠãŒã¶ãŒãšãªããžã§ã¯ãã®æ°ã®ç©ãšããŠèšç®ãããŸãã
ãããžã§ã¯ãããŒã¿ããŒã¹å
ã®ãŠãŒã¶ãŒããã³ç®¡çãªããžã§ã¯ãã®æ°ãç¡å¶éã®å Žåãæš©å©ã¬ã³ãŒãã®æ°ã¯éåžžã«æ¥éã«å¢å ããããšãçè§£ããã®ã¯ç°¡åã§ãã ãŸãããŠãŒã¶ãŒãåé€ããéã®ãããã®ã¬ã³ãŒãã®åé€ã®ç®¡çããŠãŒã¶ãŒã®ã¢ã¯ã»ã¹é åã倿ŽãããããããŠãŒã¶ãŒã®å¯èŠæ§ããå¥ã®ãŠãŒã¶ãŒã®å¯èŠæ§ã«ãªããžã§ã¯ããç§»åããå Žåã®æš©å©ã¬ã³ãŒãã®ã°ã«ãŒãç·šéã«ããããããžã§ã¯ãã§Django-Guardianã䜿çšããå¯èœæ§ã¯äœããªããŸããã
ãžã£ã³ãŽæš©åš
2çªç®ã®ã·ã¹ãã Django-Authority㯠ãå
±éã®ã¿ã°ãä»ããŠãŠãŒã¶ãŒãšç®¡ç察象ãšã³ãã£ãã£ãšã®é¢ä¿ã確ç«ããããšã«ãããæåã®ã·ã¹ãã ã®åé¡ã解決ããããšããŸãã ãã®ãããªåã¿ã°ã¯ããŠãŒã¶ãŒãŸãã¯ã³ã³ãããŒã«ãªããžã§ã¯ãã«é¢é£ä»ããããã¿ã°ããŒãã«å
ã®ãšã³ããªã§ãã åãååã®ã¿ã°ãç¹å®ã®ãŠãŒã¶ãŒãšç¹å®ã®ãªããžã§ã¯ãã«é¢é£ä»ããããŠããå Žåããã®ãŠãŒã¶ãŒã¯ãã®ã³ã³ãããŒã«ãªããžã§ã¯ãã«ã¢ã¯ã»ã¹ã§ãããšèŠãªãããŸãã
ãã®å Žåã®ã¿ã°ãšã³ããªã®æ°ã¯å€§å¹
ã«å°ãªããªãããŠãŒã¶ãŒãšãªããžã§ã¯ãã®æ°ã®åèšã«æ¯äŸããŸãããããã¯èš±å®¹ç¯å²ã§ãã ãã ãããã®ãããªã·ã¹ãã ã§ã¯ãéåžžã«çããã¿ã°åœåã·ã¹ãã ãç¶æããå¿
èŠããããŸãã å®éã«ã¯ããã®ãããªååã¯ãããããã¹ã³ãŒããã«å¯Ÿå¿ããŸãïŒå¯èŠæ§ãªã©ïŒã ãã®ã¹ã³ãŒãã«å±ãããã¹ãŠã®ãªããžã§ã¯ãã«ã¯ããã®ã¹ã³ãŒãã«ã¢ã¯ã»ã¹ã§ãããŠãŒã¶ãŒã«å ããŠã察å¿ããã¿ã°ããããŸãã
Django-Guardianã§ã¯æ ¹æ¬çã«è§£æ±ºãããŠããªãããã©ãŒãã³ã¹ã®åé¡ã¯ãDjango-Authorityã§ã¯ããªã蚱容ã§ããç¯å²ã§è§£æ±ºãããŠããŸãã
æ®å¿µãªããããã®ã·ã¹ãã ã®éçºã¯é·ãéäžæãããŠããŸãã 確ç«ãããé¢ä¿ã«åŸã£ãŠã¢ã¯ã»ã¹ãå¶åŸ¡ãã管çããã«ãšã®çµ±åã¯ãããŸããã 管çè
ããŒã¹ã®ã¢ããªã±ãŒã·ã§ã³ã€ã³ã¿ãŒãã§ã€ã¹ãéçºãããã£ãã®ã§ããããã®ã·ã¹ãã ã䜿çšããŠããšã«ãã管çè
ãç·šéããå¿
èŠããããŸããã
ãŸã 管çããã«ãç·šéããå¿
èŠãããã®ã§ãç¬èªã®ã¢ã¯ã»ã¹å¶åŸ¡ã·ã¹ãã ãäœæããŠã¿ãŸãããïŒ
æ°ããã·ã¹ãã ã«å¿
èŠãªãã®
é
åžããæš©å©
åœåãç§ãã¡ã®ã·ã¹ãã ã¯ããªããžã§ã¯ãã®å¯èŠæ§ã決å®ããããšã«ã®ã¿çŠç¹ãåœãŠããããã®å€ãããæ°Žå¹³ã«ãåå²ããŸããã å¯èŠæ§ã«é¥ã£ããªããžã§ã¯ãã管çããæš©å©ã¯ãã¢ãã«ïŒã¿ã€ãïŒã«å¿ããŠããžã£ã³ã¬ã®äŒçµ±çãªæš©å©ã·ã¹ãã ã«åŸã£ãŠãåçŽã«ãåé
ãããŸããã
ãã®ãããªåé¢ã¯ãããç¹ãŸã§ã¯ãŸã£ããåãå
¥ãããããã®ã§ããããã¢ã¯ã»ã¹ããã¯ãã¹ãã«åæ£ããå¿
èŠãããå Žåãã·ã¹ãã ãç²ãããããšã倿ããŸããã æ¬åœã«ã ãŠãŒã¶ãŒãªããžã§ã¯ããžã®ã¢ã¯ã»ã¹ãé
åžããŸãããã ãŠãŒã¶ãŒã¯èªåã®ã°ã«ãŒãã®ç®¡çè
ã§ããããã®ã°ã«ãŒããããŠãŒã¶ãŒã¬ã³ãŒããç·šéããã³åé€ããããšãã§ããŸãã äžæ¹ãã°ã«ãŒãã®ç®¡çè
ã§ãããŠãŒã¶ãŒã¯ãä»ã®ã°ã«ãŒãã®éåžžã®ãŠãŒã¶ãŒã«ãªããããšèããŠããŸãã ãã ãã管çè
ã¯ã¬ã³ãŒãã«åãã¢ã¯ã»ã¹æš©ãæã£ãŠãããããã¬ã³ãŒãã衚瀺ããããšããã«ãã©ã®ã°ã«ãŒãã§ãé¢ä¿ãããŸããã
ãããã£ãŠããæ°Žå¹³æ¹åãã«ããªããžã§ã¯ãã®å¯èŠæ§ã ãã§ãªãããªããžã§ã¯ãã«å¯ŸããŠå®è¡ãããæäœã®å
šç¯å²ãå¶åŸ¡ããå¿
èŠãããããšãæããã«ãªããŸããã åŸæ¥ããªããžã§ã¯ãã§æãäžè¬çã§äžè¬çã«äœ¿çšããã4çš®é¡ã®ã¢ã¯ã·ã§ã³ãå®çŸ©ãããŠãããé åèªCRUDïŒäœæãèªã¿åããæŽæ°ãåé€ïŒã«ãã£ãŠçµã¿åããããããšããããŸãã
- äœæãã
- èŠãããã«
- å€ãã
- åé€ãã
æš©å©å®çŸ©ã»ãã
ãªããžã§ã¯ãã®ãµãã»ããã«å¯Ÿããç¹å®ã®ã¢ã¯ã·ã§ã³ã®èš±å¯ãèŠå¶ããå¿
èŠããããŸãã Jungã§ãªããžã§ã¯ãã®ç¹å®ã®ãµãã»ãããæäœããæãèªç¶ã§å¹ççãªæ¹æ³ã¯ã QuerySet
ã䜿çšããããšã§ãã ãªããžã§ã¯ãã®ç¹å®ã®ãµãã»ãããåŠçããå¿
èŠãããå Žåã¯ãã€ã§ã䜿çšããŸãã
ãã ãã QuerySet
ã¯ãå¿
èŠãªã»ãããªãã·ã§ã³ã®1ã€ãã€ãŸãéå»ããã³æªæ¥ã®ãã¹ãŠã®ãªããžã§ã¯ããå«ã ããã®ã¢ãã«ã®ãã¹ãŠã®ãªããžã§ã¯ãã®ã»ãããèšè¿°ããŸããã å®éããã®ã»ããã¯ã¢ãã«èªäœã«ãã£ãŠæ±ºå®ãããDjangoã®ãäŒçµ±çãªãæš©å©ãå®çŸ©ãããå¯äžã®çš®é¡ã®ã»ããã§ãã å®éã QuerySet
åºã¥ããŠã¢ã¯ã»ã¹æš©ããã§ãã¯ããŠãããšããŸãããã 空ã®QuerySet
ãåãåã£ãã®ã§ãå°ãªããšãäžéšã®ãªããžã§ã¯ãã衚瀺ããããã®ååãªæš©éããªãããããŸãã¯ããŒã¿ããŒã¹å
ã«ãªããžã§ã¯ãã圢æãããŠããªãããã«ããªããžã§ã¯ãããã®äžã«ãããã©ããã確èªã§ããŸããèŠãããã«ã
ãããã£ãŠã QuerySet
ã䜿çšããŠç¹å®ã®ãªããžã§ã¯ãã®ã»ãããå®çŸ©ããããã¢ãã«ã䜿çšããŠããããŸã§ã«ååšããããŸãã¯å°æ¥äœæããããã®ã¢ãã«ã®ãã¹ãŠã®ãªããžã§ã¯ãã念é ã«çœ®ããŠãæš©éãå®çŸ©ããããªããžã§ã¯ãã®QuerySet
ãå®çŸ©ããŸãã
倿Žããå¿
èŠããããã®
管çè
å®éã«ã¯ãäžèšã®ãã¹ãŠã管çããã«ã«é©çšããå¿
èŠããããŸãã 衚瀺ãããŠãããªããžã§ã¯ãã®ãªã¹ãã衚瀺ããã確ç«ãããæš©éã«å¿ããŠããªããžã§ã¯ãã®è¿œå ãç·šéããŸãã¯åé€ãèš±å¯ããã³çŠæ¢ãããŸãã
æ¢åã®ç®¡çè
ã®åäœã倿Žããã«ã¯ããããã®ã¡ãœããã®äžéšã®ä»£ããã«ïŒãŸãã¯è¿œå ããŠïŒãæ°ããã¢ã¯ã»ã¹å¶åŸ¡ã·ã¹ãã ã«ãã£ãŠèª²ããããå¶éãšæš©éãèæ
®ããã³ãŒããåŒã³åºãããããšã確èªããå¿
èŠããããŸãã ããã¯ã Mixinããã°ã©ãã³ã°ãã³ãã¬ãŒãã䜿çšããŠè¡ãã®ãæé©ã§ããããã¯ãåºæ¬ã¯ã©ã¹ã®ãªã¹ãã®æäžéšã§ãä»ã®åºæ¬ã¯ã©ã¹ããã®ã¡ãœããåŒã³åºããã€ã³ã¿ãŒã»ããããã¯ã©ã¹ãå®çŸ©ããŸãã
åŸæ¥ã®èš±å¯ã·ã¹ãã
QuerySet
ã§å®çŸ©ããããµãã»ããã ãã§ãªããã¢ãã«QuerySet
ã§å®çŸ©ããããã®ã¿ã€ãã®ãã¹ãŠã®ãªããžã§ã¯ãã®ã»ããã«å¯Ÿããæš©éãæ±ºå®ããå¿
èŠããããŸãã ãããã£ãŠããããžã§ã¯ãã§äœ¿çšã§ããïŒãŸãã¯äœ¿çšã§ããªãïŒ å¯èœæ§ã® 1ã€ãšããŠã Permissionãªããžã§ã¯ãã«åºã¥ããžã£ã³ã¬ã®æš©å©ã®ãäŒçµ±çãªãã¢ãã«ãå®çŸ©ããŸãã
æš©å©ã説æãã¹ãå Žæ
æåã¯ãæš©å©ã®é
åžæ¹æ³ã«é¢ããæ
å ±ãæçš¿ããã®ã«æé©ãªå Žæã¯ã¢ãã«ã ãšæãããŸãã å€ãã·ã¹ãã ã¯ããã«ãªããžã§ã¯ããããŒãžã£ã䜿çšããŸãããããã¯ãã¢ãã«ãªããžã§ã¯ããžã®ã¢ã¯ã»ã¹ãæäŸããã¢ãã«ã¯ã©ã¹ïŒããããã£ãªããžã§ã¯ã ïŒã®å®çŸ©ã«æ¿å
¥ããããšã§åå®çŸ©ã§ããDjangaã®ãã®ã§ãã
ãã ãã倿ããããã«ããã®æ¹æ³ã«ã¯ããã€ãã®æ¬ ç¹ããããŸãã
ãŸããã¢ãã«ãªããžã§ã¯ãã«ã¢ã¯ã»ã¹ããæ¹æ³ã¯ãDjango ã¢ããªã±ãŒã·ã§ã³ ïŒã€ã³ã¹ããŒã«ãããããã±ãŒãžãã倿Žããã«äœ¿çšãããããšãå€ããµãã·ã¹ãã ïŒã®ããããã£ã§ã¯ãªãã ãããžã§ã¯ãå
šäœã®ããããã£ã§ãã åãã¢ããªã±ãŒã·ã§ã³ïŒããã±ãŒãžïŒãç°ãªããããžã§ã¯ãã§äœ¿çšãããå Žåããã®ã¢ããªã±ãŒã·ã§ã³ã®ã¢ãã«ãªããžã§ã¯ããžã®ã¢ã¯ã»ã¹ã¯ããããã®ãããžã§ã¯ãã§ç°ãªãæ¹æ³ã§å®çŸ©ãããå¯èœæ§ãéåžžã«é«ããªããŸãã
第äºã«ãã¢ã¯ã»ã¹ã«ãŒã«ãå®çŸ©ãããšãããã€ãã®ã¢ããªã±ãŒã·ã§ã³ïŒããšãã°ã auth ïŒã®å¢çãè¶ããããšãã§ããŸãïŒã»ãšãã©ã®å ŽåãããªããŸãïŒã ãããã®1ã€ã§èª¬æãããŠãããããå®çŸ©ã«ã¯å¥ã®ã¢ããªã±ãŒã·ã§ã³ïŒããã±ãŒãžïŒãšã®äžå¿
èŠãªéä¿¡ãå¿
èŠã«ãªãå ŽåããããŸãã
ãããã£ãŠããããžã§ã¯ãã«ã¯ãåã
ã®ã¢ããªã±ãŒã·ã§ã³ãšã¯ç¡é¢ä¿ã«ããããžã§ã¯ãã®ããŸããŸãªãªããžã§ã¯ãïŒããã±ãŒãžïŒãžã®ã¢ã¯ã»ã¹ã«ãŒã«ã®ã¬ãžã¹ããªãå¿
èŠã§ãã ãã®ã¬ãžã¹ããªã¯ãã¢ãã«ã®äœ¿çšæã«ã€ã³ããŒããããããŸããŸãªã¢ãžã¥ãŒã«ããæ§é çã«åã蟌ãããšãã§ããŸãã ãã®ãããªã¬ãžã¹ããªã«ã¯ãç¬èªã®ã¢ãã«ã ãã§ãªãããããžã§ã¯ãã«é¢é£ãããã¹ãŠã®ã¢ããªã±ãŒã·ã§ã³ïŒããã±ãŒãžïŒããã€ã³ããŒããããã¢ãã«ã®ã¢ã¯ã»ã¹ã«ãŒã«ã®å®çŸ©ãå«ãŸããŸãã
æš©å©ãèšè¿°ããæ¹æ³
ãã®åé¡ã«å¯Ÿãã倱æãããçããã解決çã¯ãæ¢åã®ããã±ãŒãžã«äžå¿
èŠãªå¶éããããããŸããã
ä»ã®ããã±ãŒãžãšã¯ç°ãªãããã®ç®çã®ããã ãã«èšèšãããããã€ãã®ç¹å¥ãªã¢ãã«ã®å©ããåããŠã§ã¯ãªãããããžã§ã¯ããšãã®ãªã¯ãšã¹ãã«æ¢ã«ååšããã¢ãã«ã«é©çšãããã³ãŒãã®å©ããåããŠæš©å©ã説æããŸãã
幞ããªããšã«ãã³ãŒãã¯ã¡ãœãããŸãã¯é¢æ°å
ã ãã§ãªããã©ã ãåŒå
ã«ãé
眮ã§ããŸãã ãã®ã¡ãœããã䜿çšããŠãæãæçœã§ã·ã³ãã«ã§é »ç¹ã«äœ¿çšãããã¢ã¯ã»ã¹å¶éã«ãŒã«ã説æããŸãã
ã¢ã¯ã»ã¹å¶éã«ãŒã«ã®å®è¡ã®ã³ã³ããã¹ã
éåžžãã¢ã¯ã»ã¹ã¯ãçŸåšã®ããŠãŒã¶ãŒã«å¯ŸããŠå¶éãããŸãã ãã ããã¢ã¯ã»ã¹ãå¶éãããŠããã³ã³ããã¹ãèŠçŽ ã¯çŸåšã®ãŠãŒã¶ãŒã ãã§ã¯ãªãããšãå¿ããŠã¯ãªããŸããã ãçŸåšã®ããžãã¹ããéžæããåœãèšèªããŸãã¯ã¢ã¯ã»ã¹ãæäŸããæ±ºå®æã«é¢é£ãããã®ä»ã®èŠå ãã¢ã¯ã»ã¹ã«åœ±é¿ããå¯èœæ§ããããŸãã
ãããã£ãŠãã¢ã¯ã»ã¹ã«ãŒã«ãå®çŸ©ããã³ãŒãã¯ãã¢ã¯ã»ã¹å¶éã®ã³ã³ããã¹ããšããŠã ãªã¯ãšã¹ãå
šäœïŒ Request ïŒãåãåããŸãã ãã®ã³ã³ããã¹ãããæ£ç¢ºã«å¶éã®å¯Ÿè±¡ãšãªããã®ã¯ããã®ã³ãŒãèªäœã«ãã£ãŠæ±ºå®ãããã¹ãã§ãã
ã·ã¹ãã ã¯ã©ã¹æ§é
ã¢ã¯ã»ã¹ãããŒãžã£ãŒ
ã·ã¹ãã ã®æ©èœãå®çŸ©ããäžå¿çãªã¯ã©ã¹ã¯ãã¢ã¯ã»ã¹ãããŒãžã£ãŒmanagers.AccessManager
ã¯ã©ã¹ã§ãã äžæ¹ã§ã¯ãããŸããŸãªãªããžã§ã¯ãã®ã¢ã¯ã»ã¹å¶éã«ãŒã«ãå®çŸ©ãããã©ã°ã€ã³ãªããžã§ã¯ããç»é²ã§ããŸãã仿¹ã§ã¯ããã®ã¯ã©ã¹ã®ãªããžã§ã¯ãã䜿çšããŠãããã°ã©ã ã§ãã®ãããªå®çŸ©ãå¿
èŠãªå Žåã«ãªããžã§ã¯ãããã³ã»ããã«é¢ããæš©éãæ±ºå®ããæäœãå®è¡ããŸãã
ã¢ã¯ã»ã¹å¶éã«ãŒã«ãäœæãã
ã¢ã¯ã»ã¹å¶éã«ãŒã«ã¯ããã©ã°ã€ã³ãªããžã§ã¯ããäœæããã³ç»é²ããããšã«ããäœæãããŸãã
ãããŒãžã£ãŒã¯ã©ã¹ã®ã¡ãœããregister/unregister_plugin(s)
䜿çšãããšããã©ã°ã€ã³ã®ã¬ãžã¹ããªãæäœã§ããŸãã 1ã€ã®ã¢ãã«ã¯ã©ã¹ã®è€æ°ã®ãã©ã°ã€ã³ãã¬ãžã¹ããªã«è¿œå ãããããšã¯ãããŸããã register_plugins
ã¡ãœããã¯ãã¢ãã«ãããŒãšããŠæ©èœããèŸæžãåãåãã register_plugin
ã¯ã¢ãã«ã¯ã©ã¹ãšãã©ã°ã€ã³ãªããžã§ã¯ããåå¥ã®ãã©ã¡ãŒã¿ãŒãšããŠåãåããŸãã
ãã«ããŒãããŒãžã£ãŒã¯ã©ã¹ã¡ãœããget_default_plugin
ã¯ãããã©ã«ãã§ç»é²æžã¿ãã©ã°ã€ã³ãè¿ãã get_default_plugin
ã¯æž¡ãããã¢ãã«ã¯ã©ã¹ã«ç»é²ããããã©ã°ã€ã³ãæ¢ããŸãã ã¢ãã«ã®ãã©ã°ã€ã³ãæ€çŽ¢ããå Žåãç¶æ¿ãèæ
®ãããŸãããã¢ãã«ã§ã¯ãªãã¯ã©ã¹ã¯æ€çŽ¢ããé€å€ãããŸãã ã¢ãã«ã®ãã©ã°ã€ã³ãèŠã€ãããªãå Žåãããã©ã«ãã®ãã©ã°ã€ã³ãè¿ãããŸãã
plugins
ã¢ãžã¥ãŒã«ã®å®çŸ©æžã¿ãã©ã°ã€ã³ã¯ã©ã¹ã«ã¯ãä»ã®ãã©ã°ã€ã³ãçµåããApplyAblePlugin
ã CheckAblePlugin
ããã³CheckAblePlugin
ã¢ã¯ã»ã¹å¶éã«ãŒã«ãåçã«å®çŸ©ãããã©ã°ã€ã³ãããã³CheckAblePlugin
ãªããžã§ã¯ãã®åæã«åºã¥ããåŸæ¥ã®ã¢ã¯ã»ã¹å¶éã«ãŒã«ãšåæ§ã®ã¢ã¯ã»ã¹å¶éã«ãŒã«ãå®è£
ããDjangoAccessPlugin
ãå«ãŸããŸãã
ã¢ã¯ã»ã¹å¶éãã§ãã¯
åçã«å®çŸ©ããã屿§ãapply_something
ãããšã check_something
ã¢ã¯ã»ã¹ãããŒãžã£ãŒã§apply_something
ã¡ãœãããšapply_something
ã¡ãœãããåŒã³åºãsomething
ãã§ããŸããããã§ã something
ãä»»æã®æå¹ãªååã§ãã ãã®ååã¯ãã·ã¹ãã ããèŠæ±ãããèœå- èœå -ã®ååã§ãã ããšãã°ãè¡šç€ºæš©ïŒ visible
èœåïŒãååŸããã«ã¯ã check_visible
ããã³appy_visible
ã¡ãœããcheck_visible
appy_visible
ãŸãã
check_something
ã¡ãœããã¯ã¢ãã«ãåãåããããã«é¢é£ããæ©èœã®å¶éãæ±ºå®ãã appy_something
ã¯appy_something
ã¡ãœããã«æž¡ãããã¡ãœããã¯ãã®ãªã¯ãšã¹ãã®ãªããžã§ã¯ãã®ãªã¹ãã«é¢ããæ©èœã®å¶éãæ±ºå®ããŸãã
ãããŒãžã£ãŒã¯ãç»é²ããããã©ã°ã€ã³ãæ€çŽ¢ããããããããŸãã¯ããã©ã«ãã§ãã©ã°ã€ã³ããåæ§ã®æ¹æ³ã§èŠæ±ããŸãã æ¬ èœããŠããã¡ãœãããšã¯ãèŠæ±ãããã»ããã®ãã¹ãŠã®ãªããžã§ã¯ãã«é¢ããŠãæå®ãããèœåã§èŠæ±ãããã¢ã¯ã·ã§ã³ã解決ããããšãæå³ããŸãã ãã©ã°ã€ã³ãèŠã€ãã£ãå Žåããã§ãã¯ããŸãã
ã¢ãã«å
šäœãžã®ã¢ã¯ã»ã¹ãå¶éãã
ã¢ãã«å
šäœãžã®ã¢ã¯ã»ã¹ã¯ã check_
ãã¬ãã£ãã¯ã¹ãæã€ãã©ã°ã€ã³ã¡ãœããã«ãã£ãŠå¶éãããŸãã ã¢ãã«ãšãæš©å©ãã§ãã¯ã®ã³ã³ããã¹ããå®çŸ©ããRequest
ãªããžã§ã¯ããã¡ãœããã«æž¡ãããŸãã ã¡ãœãããFalseãè¿ãå Žåãã¢ã¯ã»ã¹ã¯æåŠãããŸãã ã¢ã¯ã»ã¹ãèš±å¯ããããã«ãéåžžã¯èŸæžãè¿ãããŸããããã«ããã CompoundPlugin
åŠçãããšãã«è¿ãããå€ãçµã¿åãããããšãã§ããŸãã å€ãè¿ããã®ããäºæããªãæ¹æ³ã«ããã check_appendable
ã远å ããããã®ã¢ã¯ã»ã¹ããªã¯ãšã¹ããããšãã«ãããã䜿çšã§ããŸãã
åã
ã®ãªããžã§ã¯ããžã®ã¢ã¯ã»ã¹ãå¶éãã
åã
ã®ãªããžã§ã¯ããžã®ã¢ã¯ã»ã¹å¶éã®åæã¯ãæå®ãããã¢ã¯ã»ã¹ãèš±å¯ãããŠãããªããžã§ã¯ãã®ã¿ãæ®ããŠã QuerySet
ã¯ãšãªã«ãã£ã«ã¿ãŒã課ãããšãæå³ããŸãã
ãã®ãªãŒããŒã¬ã€ã¯ã apply_
ãã¬ãã£ãã¯ã¹ãä»ãããã©ã°ã€ã³ã¡ãœããã«ãã£ãŠå®è¡ãããŸãã QuerySet
ãšãæš©å©ãã§ãã¯ã®ã³ã³ããã¹ããå®çŸ©ããRequest
ãªããžã§ã¯ããã¡ãœããã«æž¡ãããŸãã ãã®ã¡ãœããã¯ãæž¡ãããQuerySet
ãã£ã«ã¿ãŒãé©çšããæå®ãããã³ã³ããã¹ãã®æå®ãããã¢ã¯ã»ã¹ã¡ãœãããèš±å¯ãããªããžã§ã¯ãã®ã¿ã«ãªããžã§ã¯ãã®ã»ãããå¶éãããã£ã«ã¿ãŒãããQuerySet
ãè¿ããŸãã
æšæºãã§ãã¯
ã·ã¹ãã ã¯ãã·ã¹ãã ãªããžã§ã¯ãã«é¢ããŠã³ã³ããã¹ãããæ¬¡ã®æ©èœããã§ãã¯ããŸãã
appendable
-äœævisible
-åç
§changeable
-倿Ždeleteable
-åé€
åæã«ãç¹å®ã®ãªããžã§ã¯ãã«å¯Ÿãããã§ãã¯ã¯check_appendable
ããcheck_appendable
ãªæ©èœã¯check_appendable
ããããcheck_appendable
ã¡ãœããã䜿çšããŠãã¢ãã«å
šäœã«ââé¢ããŠã®ã¿ãã§ãã¯ãããŸãããããã¯ãã§ã«äœæãããŠããŸãã
æ®ãã®èœåã¯ãã¢ãã«å
šäœãšãªããžã§ã¯ãã®ç¹å®ã®ãªã¹ãã®äž¡æ¹ã«é¢ããŠãã¹ããããŸãã åèšã§ãæšæºãã§ãã¯ã®å Žåãæ¬¡ã®ãã©ã°ã€ã³ã¡ãœãããåŒã³åºãããŸãïŒå®çŸ©ãããŠããå ŽåïŒã
check_appendable
check_visible
apply_visible
check_changeable
apply_changeable
check_deleteable
apply_deleteable
ã«ã¹ã¿ã ãã§ãã¯
ã©ã®ã¢ããªã±ãŒã·ã§ã³ã§ãAccessManager
ãªããžã§ã¯ããäœæããæšæºæ©èœãšéæšæºæ©èœã®äž¡æ¹ããã§ãã¯ããããã«èŠæ±ã§ããŸãã ãããè¡ãããã«ãã¢ããªã±ãŒã·ã§ã³ã¯check_
ãŸãã¯check_
apply_
ãšãèŠæ±ãããèœåã«å¯Ÿå¿ãããµãã£ãã¯ã¹ãæã€ã¡ãœããããªã¯ãšã¹ãããŸãã
èŠæ±ãããèœåã«å¯Ÿå¿ããã¡ãœãããèŠã€ãã£ããã©ã°ã€ã³ã§å®çŸ©ãããŠããªãå Žåãå©çšå¯èœãšèŠãªãããŸãã ãã®å Žåã®check_
ã¡ãœããã¯ç©ºã®èŸæžãè¿ãã check_
ã¯å€æŽãããŠããªãQuerySet
ã§ãã
管çè
admin
ã¢ãžã¥ãŒã«ã«ã¯ãæšæºã®Dzhangovskoy管çããã«ã®ä»»æã®ã¯ã©ã¹ãšæ··åã§ããç¹å¥ãªã¯ã©ã¹AccessControlMixin
ãå«ãŸããŠãAccessControlMixin
ã ãã®ã¯ã©ã¹ã¯ããªããžã§ã¯ããžã®ã¢ã¯ã»ã¹é åºã®æ±ºå®ã«é¢äžããã¡ãœããããªãŒããŒã©ã€ããããããžã§ã¯ãã«èšå®ãããã¢ã¯ã»ã¹å¶éã«ãŒã«ã«åŸã£ãŠã¢ã¯ã»ã¹ãå¶éããŸãã
管çããã«ããŒãããæ§ç¯ããããã«ã AccessModelAdmin
ã AccessTabularInline
ããã³AccessStackedInline
ã¯ã©ã¹ãå®çŸ©ãããŠããŸãããããã®ã¯ã©ã¹ã¯ã AccessTabularInline
ãšãŸã£ããåãæ¹æ³ã§äœ¿çšã§ããŸãã æ¬è³ªçã«ããããã®ã¯ã©ã¹ã¯AccessControlMixin
ãšå¯Ÿå¿ããAccessControlMixin
ã¯ã©ã¹ã®çŽç²ãªçµã¿åããã§ãã
äŸ
ããã±ãŒãžã®æ©èœã瀺ãããã«ãããã±ãŒãžã®ãœãŒã¹ã³ãŒãã®äžéšã§ããäŸã䜿çšããŸãã
ãã®äŸã§ã¯ãæšæºããã±ãŒãžsomeapp
ã¢ãã«ã䜿çšããç¬èªã®è¿œå ã¢ããªã±ãŒã·ã§ã³someapp
ã䜿çšããŠãã¢ãã«ã®2ã€ã®ã¯ã©ã¹ãå®çŸ©ããŠããŸãã
- åå¥ã®
ModelAdmin
ãã管çãããModelAdmin
ããšãã£ã¿ãŒã®ã°ã«ãŒãeditor_group
ããã³èªã¿åãã¢ã¯ã»ã¹æš©ãæã€å€ãã®ã°ã«ãŒããåç
§ããŸãviewer_groups
SomeChild
ãåç
§ãã InlineAdmin
ãã管çãããInlineAdmin
äŸã§ã¯ã次ã®ã¢ã¯ã»ã¹ã¹ããŒã ãå®çŸ©ããŠããŸãã
- ã¹ãŒããŒãŠãŒã¶ãŒã¯äœã§ãã§ããŸã
- éåžžã®
Permission
Dzhangiã䜿çšãããŸã - ãã¹ã¯ãŒããšé»åã¡ãŒã«ãé€ããã¹ãŠã®ãŠãŒã¶ãŒã¯ãèš±å¯ãããŠããå Žåã
User
ãªããžã§ã¯ãã®ãã¹ãŠã®ç¹æ§ãçžäºã«èªã¿åãããšãã§ããŸãã is_superuser
ãã£ãŒã«ããé€ããèªåã«é¢ããUser
ã¬ã³ãŒãã倿Žã§ããŸãGroup
ãšPermission
æš©éã¯ããã®ãŠãŒã¶ãŒã«é¢é£ãããŠãŒã¶ãŒã®ã¿ã䜿çšã§ããŸãSomeChild
ãšãã®ãµããªããžã§ã¯ãSomeChild
ã¯ã viewer_groups
ãšããŠå®çŸ©ãããã°ã«ãŒãã®ãŠãŒã¶ãŒãèªã¿åãå¯èœã§ã editor_group
å«ãŸãããŠãŒã¶ãŒãæžã蟌ã¿å¯èœã§ãã
ã°ã«ãŒãã®è¿œå ã¢ã¯ã»ã¹ã«ãŒã«ã¯ãè¿œå æã«äœæè
ãã°ã«ãŒãã«å«ãŸããããšã決å®ããŸãã ããã¯ãæ°ããäœæãããã°ã«ãŒãã远å åŸã«äœæè
ãå©çšã§ããããã«ããããã«è¡ãããŸãã
ãããã£ãŠããã®äŸã§ã¯ãããã±ãŒãžã®æ©èœã䜿çšããæå°éã®è¿œå ã³ãŒãã远å ããããšã«ãããåã
ã®ãŠãŒã¶ãŒæ©èœãšå
±éã¹ããŒã¹ã®äž¡æ¹ãžã®ã¢ã¯ã»ã¹ãå¶åŸ¡ãããå¿«é©ã§å®å
šãªç°å¢ãäœæãããŸãã
ãããã«
Django-Accessããã±ãŒãžã®ã¢ã¯ã»ã¹å¶éã«ãŒã«ã®æ©èœå®çŸ©ã«ãããã¢ã¯ã»ã¹å¶åŸ¡ã®ããã®è€éãªä»»æã«ãŒã«ã®èšå®ãç°¡åã«ãªããã³ãŒãã§ãããžã§ã¯ããã¬ã³ãŒãã§ããŒã¿ããŒã¹ãä¹±éã«ãã远å ãšã³ãã£ãã£ã®äœæãåé¿ã§ããŸãã
ãããžã§ã¯ãã®éçºã«åå ãããã°ãæ¢ããåé¡ãäœæããŸãã ãã«ãªã¯ãšã¹ãã¯å€§æè¿ã§ãã