2012-04-08 15 views
7

La documentazione autorizzazione/autenticazione per Django 1.4 fornisce il seguente frammento di codice per la creazione di autorizzazioni personalizzate a livello di codice:Quando creare le autorizzazioni Django personalizzate al livello di programmazione?

Edit: (Vorrei impiegare questo per autorizzazioni non necessariamente legato ad una specifica classe del modello, ma le autorizzazioni più generali che riguardano più tipi.)

from django.contrib.auth.models import Group, Permission 
from django.contrib.contenttypes.models import ContentType 

content_type = ContentType.objects.get(app_label='myapp', model='BlogPost') 
permission = Permission.objects.create(codename='can_publish', 
             name='Can Publish Posts', 
             content_type=content_type) 

Source

La mia domanda è dove questo codice deve essere inserito. Ovviamente dovrebbero essere creati solo una volta, ma non voglio farlo nella shell. Sembra che questo dovrebbe essere memorizzato in un file da qualche parte. (Per ragioni di documentazione.)

risposta

2

Di solito è sufficiente aggiungere semplicemente le autorizzazioni necessarie alla classe modello corrispondente utilizzando il meta attributo permissions.

Questo è dal official documentation:

class Task(models.Model): 
    ... 
    class Meta: 
     permissions = (
      ("view_task", "Can see available tasks"), 
      ("change_task_status", "Can change the status of tasks"), 
      ("close_task", "Can remove a task by setting its status as closed"), 
     ) 
+0

Mi dispiace, avrei dovuto chiarito - questo è per le autorizzazioni globali, o autorizzazioni che non sono collegati a una specifica classe del modello. –

+2

Capisco. Cosa succede se lo memorizzi in un apparecchio? – aruseni

+0

Sono molto nuovo sia per Python che per Django, ma una rapida ricerca su Google indica che i dispositivi potrebbero essere una buona soluzione. Mi giro intorno, grazie! –

Problemi correlati