Django AttributeError 'tuple' object has no attribute 'regex'

12,700

Solution 1

You forgot the 'url'

url(r'^admin/', include(admin.site.urls)),
url(r'^tinymce/', include('tinymce.urls')),

urlpatterns should be a list of url() instances

url returns RegexURLPattern but instead a tuple is found in your list.

https://docs.djangoproject.com/en/1.8/_modules/django/conf/urls/#url

Solution 2

I know it's not absolutely related to the question, but sometimes this error can be a little deeper than directly in a urls.py file.

I got this error and the cause of the problem wasn't in the error stack trace.

I had this problem while browsing the Admin with a custom Admin Class, and the problem was with the method get_urls() of this class, which was returning something like:

def get_urls(self):
    from django.conf.urls import patterns
    return ['',
            (r'^(\d+)/password/$',
             self.admin_site.admin_view(self.user_change_password))] + super(CompanyUserAdmin, self).get_urls()

To fix it:

def get_urls(self):
    from django.conf.urls import patterns
    return [
            url(r'^(\d+)/password/$',
             self.admin_site.admin_view(self.user_change_password))] + \
           super(CompanyUserAdmin, self).get_urls()

Don't forget the import of 'url':

from django.conf.urls import url
Share:
12,700
oyilmaztekin
Author by

oyilmaztekin

Updated on June 03, 2022

Comments

  • oyilmaztekin
    oyilmaztekin about 2 years

    I'm using django 1.8 and having trouble with it. I am trying to import tinymce in my project. When I render it caught

    AttributeError: tuple' object has no attribute 'regex'

    When I remove the url in url.py it is working. Here is my codes.

    url.py

    from django.conf.urls import include, url
    from django.contrib import admin
    
    urlpatterns = [
        # Examples:
        # url(r'^$', 'hizlinot.views.home', name='home'),
        # url(r'^blog/', include('blog.urls')),
        url(r'^admin/', include(admin.site.urls)),
        (r'^tinymce/', include('tinymce.urls')),
    
    ]
    

    settings.py

    """
    Django settings for hizlinot project.
    
    Generated by 'django-admin startproject' using Django 1.8.
    
    For more information on this file, see
    https://docs.djangoproject.com/en/1.8/topics/settings/
    
    For the full list of settings and their values, see
    https://docs.djangoproject.com/en/1.8/ref/settings/
    """
    
    # Build paths inside the project like this: os.path.join(BASE_DIR, ...)
    import os
    BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
    
    
    # Quick-start development settings - unsuitable for production
    # See https://docs.djangoproject.com/en/1.8/howto/deployment/checklist/
    
    # SECURITY WARNING: keep the secret key used in production secret!
    SECRET_KEY = 'b-4jipu5t(+)g(2-7g#s=1rs19dhpj-1-!x1b-*v7s85f-m%&q'
    
    # SECURITY WARNING: don't run with debug turned on in production!
    DEBUG = True
    
    ALLOWED_HOSTS = []
    
    
    # Application definition
    
    INSTALLED_APPS = (
        'django.contrib.admin',
        'django.contrib.auth',
        'django.contrib.contenttypes',
        'django.contrib.sessions',
        'django.contrib.messages',
        'django.contrib.staticfiles',
        'edebiyat',
        'tinymce',
    )
    
    MIDDLEWARE_CLASSES = (
        'django.contrib.sessions.middleware.SessionMiddleware',
        'django.middleware.common.CommonMiddleware',
        'django.middleware.csrf.CsrfViewMiddleware',
        'django.contrib.auth.middleware.AuthenticationMiddleware',
        'django.contrib.auth.middleware.SessionAuthenticationMiddleware',
        'django.contrib.messages.middleware.MessageMiddleware',
        'django.middleware.clickjacking.XFrameOptionsMiddleware',
        'django.middleware.security.SecurityMiddleware',
    )
    
    ROOT_URLCONF = 'hizlinot.urls'
    
    TEMPLATES = [
        {
            'BACKEND': 'django.template.backends.django.DjangoTemplates',
            'DIRS': [],
            'APP_DIRS': True,
            'OPTIONS': {
                'context_processors': [
                    'django.template.context_processors.debug',
                    'django.template.context_processors.request',
                    'django.contrib.auth.context_processors.auth',
                    'django.contrib.messages.context_processors.messages',
                ],
            },
        },
    ]
    
    WSGI_APPLICATION = 'hizlinot.wsgi.application'
    
    
    # Database
    # https://docs.djangoproject.com/en/1.8/ref/settings/#databases
    
    DATABASES = {
        'default': {
            'ENGINE': 'django.db.backends.sqlite3',
            'NAME': os.path.join(BASE_DIR, 'db.sqlite3'),
        }
    }
    
    
    # Internationalization
    # https://docs.djangoproject.com/en/1.8/topics/i18n/
    
    LANGUAGE_CODE = 'en-us'
    
    TIME_ZONE = 'UTC'
    
    USE_I18N = True
    
    USE_L10N = True
    
    USE_TZ = True
    
    
    # Static files (CSS, JavaScript, Images)
    # https://docs.djangoproject.com/en/1.8/howto/static-files/
    
    STATIC_URL = '/static/'