2009-12-18 17 views
6

Tengo un sitio con Django la ejecución de algunas aplicaciones personalizadas. No estaba usando el ORM de Django, solo la vista y las plantillas, pero ahora necesito almacenar algo de información, así que creé algunos modelos en una aplicación y habilité el Administrador.Django Admin: (? Problema de permisos) no ver cualquier aplicación

El problema es cuando inicio sesión en el administrador sólo dice "Usted no tiene permiso para modificar nada", ni siquiera la aplicación de autenticación muestra en la página. Estoy usando el mismo usuario creado con syncdb como superusuario.

En el mismo servidor que tienen otro sitio que está utilizando el Administrador bien.

Usando Django con Apache 1.1.0/2.2.10 mod_python/3.3.1 Python/2.5.2, con psql (PostgreSQL) 8.1.11 todo en Gentoo Linux 2.6.23

Cualquier idea en lo que pueda ¿encuentra una solución?

Muchas gracias.

ACTUALIZACIÓN: Funciona desde el servidor de desarrollo. Apuesto a que esto tiene algo que ver con algunos permisos del sistema de archivos pero no puedo encontrarlo.

Update2: host virtual fichero de configuración:

<Location /> 
    SetHandler python-program 
    PythonHandler django.core.handlers.modpython 
    SetEnv DJANGO_SETTINGS_MODULE gpx.settings 
    PythonDebug On 
    PythonPath "['/var/django'] + sys.path" 
</Location> 

Actualización 3: más información

  • /var/django/GPX/init existe .py y está vacía
  • corro pitón manage.py de/var/django/GPX directorio
  • El sitio es GPX, una de las aplicaciones es contable y vive en/var/django/GPX/contable
  • el usuario apache es el grupo WebDev y todos estos directorios y archivos pertenecen a ese grupo y tener permiso rw

ACTUALIZACIÓN 4: confirmado que el archivo de configuración es la misma para apache y de ejecución del servidor (le cambió el nombre y ambos rompieron)

ACTUALIZACIÓN 5:/var/django/GPX/contable/init existe .py

Esta es la parte relevan de urls.py:

urlpatterns = patterns('', 
         (r'^admin/', include(admin.site.urls)), 
        ) 
urlpatterns += patterns('gpx', 
    (r'^$',       'menues.views.index'), 
    (r'^adm/$',      'menues.views.admIndex'), 
+0

¿Ha intentado utilizar el Django server incorporado es decir maneja Python. py runserver o vas directamente a Apache + mod_python – Martin

Respuesta

2

Asegúrate de haber agregado tu aplicación a la configuración.INSTALLED_APPS.

La plantilla de Django para la página de índice de aplicación de administración lee:

{% if app_list %} 
    {% for app in app_list %} 
    ... 
{% else %} 
    <p>{% trans "You don't have permission to edit anything." %}</p> 
{% endif %} 

que deben ser su problema.


EDITAR: O eso o no has iniciado sesión como el usuario que dices que eres. ¿Puedes buscar en la base de datos y asegurarte de que auth_user.is_superuser para el usuario en cuestión tiene un valor de 1?


EDIT: Si is_staff de usuario y is_superuser están marcados como 1 en el PP, y está seguro de que está en el sistema como ese usuario; ¿Es posible que solo esté viendo esto en producción (es decir, en Apache) y que su configuración para la producción es diferente a la del desarrollo?


EDITAR: Así que tiene un comportamiento diferente en desarrollo y producción. Puedo pensar en dos escenarios:

a) Tiene una settings.py diferente para la producción. ¿Puedes editar tu pregunta mostrando la parte relevante de tu httpd.conf? Debe ser algo así como:

<Location "/mysite/"> 
    SetHandler python-program 
    PythonHandler django.core.handlers.modpython 
    SetEnv DJANGO_SETTINGS_MODULE mysite.settings 
    PythonOption django.root /mysite 
    PythonDebug On 
</Location> 

Además, ¿cuál es su PYTHONPATH?

¿Qué dice la línea SetEnv? ¿Está apuntando al mismo módulo que tienes en desarrollo? ¿Estás seguro de que en tu PYTHONPATH tienes mysite.settings como el archivo que crees que tienes?

b) Tiene un problema PYTHONPATH en producción y no se encuentran las aplicaciones. Esto debería generar un error mucho más grave, aunque ...


Preguntas:

  • /var/django/GPX tiene una init .py corregir?
  • /var/django/gpx/settings.py es el mismo archivo que usaste para administrar manage.py runserver?
  • ¿Cuál es el nombre de tu aplicación en/var/django /?
  • ¿El usuario al que está ejecutando Apache tiene permisos para todos estos directorios?
+0

Gracias por tu respuesta. Todas las aplicaciones están en la configuración, ninguna se muestra. También verifiqué la base de datos y el usuario tiene is_superuser en. –

+0

¿Esto sucede cuando ejecuta manage.py runserver? – cethegeek

+0

Ok, celopes, estás cerca. Cuando ejecuto el servidor de desarrollo, el administrador muestra todo. Simplemente no lo entiendo. Estaba haciendo una gran edición en este sitio, si el archivo settings.py no era correcto no debería poder trabajar en él. Sin embargo, cuando lo veo desde Apache, no funciona, pero parece funcionar desde el servidor de desarrollo. –

2

Intente acceder a su base de datos y en la tabla auth_user asegúrese de que los campos is_staff, is_active y is_superuser están marcados como verdaderos (1) para su usuario.

11

Parece que no ha registrado ninguna aplicación con el administrador (paso 5 en this overview).

Intente agregar la línea admin.autodiscover() a su urls.py principal, asegurándose de hacer from django.contrib import admin primero.

Por ejemplo:

# Other imports... 
from django.contrib import admin 

admin.autodiscover() 

urlpatterns = patterns('', 
    ('^admin/', include(admin.site.urls)), 
    # Other URL patterns... 
) 

También puede registrar sus modelos de forma individual con admin.site.register(YourModel).

+0

+1 - si el descubrimiento automático no se realizó, la lista de aplicaciones estará en blanco para index.html en admin y verá ese mensaje. – cethegeek

+0

Gracias, esto estuvo bien, tenía esas líneas en urls.py. –

+0

Muchas gracias. Su respuesta no cubría mi problema, pero su código me ayudó. (Eliminé 'admin.autodiscover()') –

0

nos encontramos con el mismo problema al instalar Django 1.1 sobre una antigua instalación de Django 0,96

fue resuelto cuando hicimos una nueva instalación

22

Esperamos que esto ayude a alguien, pero hemos tenido este mismo problema porque alguien agregó un backend de autenticación diferente a settings.py y no mantuvo el valor predeterminado de ModelBackend.Cambiando la configuración a:

AUTHENTICATION_BACKENDS = (
    'auth.authentication.EmailBackend', 
    'django.contrib.auth.backends.ModelBackend', 
) 

lo arreglaron para nosotros.

+0

Me ayudó a resolver un problema con los permisos de grupo después de reemplazar el back-end. ¡Gracias! – yprez

+1

Esto funcionó para mí. Gracias. Me parece sorprendente. Me parece erróneo que los permisos no funcionen después de eliminar ModelBackend de los servidores de autenticación. – elif

+0

Gracias, también me metí en este problema. – jnns

0

que tenían el mismo problema, mi archivo de configuración fue como sigue:

PROJECT_APPS = (
     'app1', 
     'app2', 
    ) 

INSTALLED_APPS = (

    'django.contrib.auth', 
    'django.contrib.contenttypes', 
    'django.contrib.sessions', 
    'django.contrib.sites', 
    'django.contrib.messages', 
    'django.contrib.staticfiles', 
    'django.contrib.admin', 
    'django.contrib.flatpages', 

    # django-allauth settings 
    'allauth', 
    'allauth.account', 
    'allauth.socialaccount', 

    # auth providers 
    'allauth.socialaccount.providers.facebook', 

    'storages', 
    'compressor', 
    'south', 

    'gunicorn', 
    'kombu.transport.django', 
    'djcelery', 

    'django_nose', 
    'raven.contrib.django.raven_compat', 

    'djrill', 
    'django_newsfeed' 

) + PROJECT_APPS 

me olvidó añadir , después django_newsfeed