webentwicklung-frage-antwort-db.com.de

Nicht ordnungsgemäß konfiguriert: Die enthaltene urlconf <project> .urls enthält keine Muster

Ich habe ein Django (1.6.x) -Projekt, das gut mit dem Dev-Server läuft, aber unter Apache2 (2.2.22.1) und mod_wsgi (3.3-4) auf Ubuntu 12.04.3 mit dem Fehler fehlschlägt

Nicht ordnungsgemäß konfiguriert: Die enthaltene urlconf erp.urls enthält keine Muster

Ich verstehe nicht, warum es mit dem Dev-Server funktionieren würde, aber nicht mit Apache2/mod_wsgi, und ich finde es schwierig, herauszufinden, woher der Fehler kommt.

Es gibt eine Reihe von anderen SO - Fragen, aber der einzige Ort, den ich umgekehrt verwende (ein zuvor gefundenes Problem) ist in get_absolute_url in meinen Modellen - das sollte in Ordnung sein?

Das Projekt ist im Two-Scoops-Stil eingerichtet, insbesondere das Layout ist:

<repository_root>/<Django_project_root>/<configuration_root>/

was übersetzt in:

erp_root/erp/erp/

und die Einstellungen sind

erp_root/erp/erp/settings/*py (einschließlich __init__.py)

erp/urls.py;

from Django.conf import settings
from Django.conf.urls import patterns, include, url
from Django.contrib import admin
admin.autodiscover()

urlpatterns = patterns('',
    url(r'^$', 'Django.contrib.auth.views.login', {'template_name': 'login.html'}),
    url(r'^admin/', include(admin.site.urls)),
    url(r'^login/$', 'Django.contrib.auth.views.login', {'template_name': 'login.html'}, name='login'),
    url(r'^logout/$', 'Django.contrib.auth.views.logout_then_login', {}, name='logout'),
    url(r'^search/', include('haystack.urls')),
    url(r'^inventory/', include('inventory.urls')),
)

if settings.DEBUG:
    import debug_toolbar
    urlpatterns += patterns('',
    url(r'^__debug__/', include(debug_toolbar.urls)),
)

und inventory/urls.py:

from Django.conf.urls import url, patterns
from .forms import CarrierWizardForm1, CarrierWizardForm2, MovementWizardForm1,MovementWizardForm2
from . import views

carrier_wizard_forms = [CarrierWizardForm1, CarrierWizardForm2]
movement_wizard_forms = [MovementWizardForm1, MovementWizardForm2]

urlpatterns = patterns('',
    url(r'^$', views.PartNumberListView.as_view(), name='inventory_list_index'),
    url(r'^parttype/$', views.part_type_list, name='index'),
    url(r'^parttype/(?P<parttype>\d{2})/$', views.part_type_view, name='part_type_view'),
    url(r'^partnumber/$', views.PartNumberListView.as_view(), name='partnumber_list'),
    url(r'^partnumber/add/$', views.PartNumberCreateView.as_view(), name='partnumber_add'),
    url(r'^partnumber/(?P<slug>[-\w]+)/$', views.PartNumberView.as_view(), name='partnumber_view'),
    url(r'^partnumber/(?P<slug>[-\w]+)/update/$', views.PartNumberUpdateView.as_view(), name='partnumber_update'),
    url(r'^partnumber/(?P<slug>[-\w]+)/delete/$', views.PartNumberDeleteView.as_view(), name='partnumber_delete'),
    ....
       )

und erp/settings/dev.py:

# Django settings for erp project.
# settings.py

from unipath import Path

PROJECT_DIR = Path(__file__).ancestor(3)
MEDIA_ROOT = PROJECT_DIR.child("media")
STATIC_ROOT = PROJECT_DIR.child("static")
STATICFILES_DIRS = (
  PROJECT_DIR.child("assets"),
)
TEMPLATE_DIRS = (
  PROJECT_DIR.child("templates"),
)


DEBUG = True
TEMPLATE_DEBUG = DEBUG

TIME_ZONE = 'Australia/Melbourne'
LANGUAGE_CODE = 'en-au'
SITE_ID = 1
USE_TZ = True

DATE_FORMAT = 'd/m/y'
SHORT_DATE_FORMAT = 'd/m/y'

# URL that handles the media served from MEDIA_ROOT. Make sure to use a
# trailing slash.
# Examples: "http://example.com/media/", "http://media.example.com/"
MEDIA_URL = ''

# Absolute path to the directory static files should be collected to.
# Don't put anything in this directory yourself; store your static files
# in apps' "static/" subdirectories and in STATICFILES_DIRS.
# Example: "/var/www/example.com/static/"
STATIC_ROOT = ''

# URL prefix for static files.
# Example: "http://example.com/static/", "http://static.example.com/"
STATIC_URL = '/static/'

STATICFILES_FINDERS = (
    'Django.contrib.staticfiles.finders.FileSystemFinder',
    'Django.contrib.staticfiles.finders.AppDirectoriesFinder',
)

# List of callables that know how to import templates from various sources.
TEMPLATE_LOADERS = (
    'Django.template.loaders.filesystem.Loader',
    'Django.template.loaders.app_directories.Loader',
)

MIDDLEWARE_CLASSES = (
    'debug_toolbar.middleware.DebugToolbarMiddleware',
    'Django.middleware.common.CommonMiddleware',
    'Django.contrib.sessions.middleware.SessionMiddleware',
    'Django.middleware.csrf.CsrfViewMiddleware',
    'Django.contrib.auth.middleware.AuthenticationMiddleware',
    'Django.contrib.messages.middleware.MessageMiddleware',
    'stronghold.middleware.LoginRequiredMiddleware',
    'Django.middleware.clickjacking.XFrameOptionsMiddleware',
)

ROOT_URLCONF = 'erp.urls'

# Python dotted path to the WSGI application used by Django's runserver.
WSGI_APPLICATION = 'erp.wsgi.application'


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.formtools',
    'Django.contrib.humanize',
    'inventory',
    'Django_extensions',
    'extra_views',
    'debug_toolbar',
    'Django_tables2',
    'stronghold',
    'bootstrap3',
    'haystack',
)

LOGIN_URL = '/login'
LOGOUT_URL = '/logout'

# For Stronghold
STRONGHOLD_PUBLIC_NAMED_URLS = (
    'login',
    'logout',
)

# This is required by the debug toolbar middleware
INTERNAL_IPS = ('192.168.0.16','0.0.0.0','127.0.0.1','::1', '192.168.0.115')

# This is reqquired by Django_tables2
TEMPLATE_CONTEXT_PROCESSORS = ("Django.contrib.auth.context_processors.auth",
                           "Django.core.context_processors.debug",
                           "Django.core.context_processors.i18n",
                           "Django.core.context_processors.media",
                           "Django.core.context_processors.static",
                           "Django.core.context_processors.tz",
                           "Django.contrib.messages.context_processors.messages",
                           "Django.core.context_processors.request"
                          )
}

LOGIN_REDIRECT_URL = '/inventory/'

DEBUG_TOOLBAR_PANELS = [
'debug_toolbar.panels.versions.VersionsPanel',
'debug_toolbar.panels.timer.TimerPanel',
'debug_toolbar.panels.settings.SettingsPanel',
'debug_toolbar.panels.headers.HeadersPanel',
'debug_toolbar.panels.request.RequestPanel',
'debug_toolbar.panels.sql.SQLPanel',
'debug_toolbar.panels.staticfiles.StaticFilesPanel',
'debug_toolbar.panels.templates.TemplatesPanel',
'debug_toolbar.panels.cache.CachePanel',
'debug_toolbar.panels.signals.SignalsPanel',
'debug_toolbar.panels.logging.LoggingPanel',
]

def show_toolbar(request):
    return True  # Always show toolbar, for example purposes only.

DEBUG_TOOLBAR_CONFIG = {
'INTERCEPT_REDIRECTS': False,
'INSERT_BEFORE': '</body>',
'ENABLE_STACKTRACES': True,
}

# This is required for Haystack - the search engine
HAYSTACK_CONNECTIONS = {
      'default': {
    'ENGINE': 'haystack.backends.solr_backend.SolrEngine',
    'URL': 'http://127.0.0.1:8085/solr/erp',
  },
}

Mein wsgi ist der standard mit kleineren einstellungen mod:

import os
os.environ.setdefault("Django_SETTINGS_MODULE", "erp.settings.settings")
from Django.core.wsgi import get_wsgi_application
application = get_wsgi_application()

Mein Apache2/sites-avail/erp.conf lautet:

<VirtualHost *:80>
   ServerName deverp
   ServerAdmin administrator
   DocumentRoot /path/www/dev/erp/erp/
   ErrorLog /var/log/Apache2/dev/error.log
   CustomLog /var/log/Apache2/dev/access.log combined
   WSGIDaemonProcess deverp python-path=/path/www/dev/erp/erp:/path/.virtualenvs/erp-dev/lib/python2.7/site-packages
   WSGIProcessGroup deverp
   WSGIScriptAlias / /path/www/dev/erp/erp/erp/wsgi.py
  <Directory /path/www/dev/erp/erp/erp>
  <Files wsgi.py>
    Order deny,allow
    Allow from all
  </Files>
  </Directory>
</VirtualHost>
63
datakid

Also bin ich tatsächlich auf ein ähnliches Problem gestoßen. Zufällig, nachdem Sie in den Ausgaben für Django-Festung gepostet haben. Das Problem ist tatsächlich auf eine fehlende Einstellung in der Django-Debug-Symbolleiste zurückzuführen.

Die Einstellung, die Sie vermissen, ist:

DEBUG_TOOLBAR_PATCH_SETTINGS = False 

Es funktioniert mit Runserver, aber wenn Sie versuchen, es mit Honcho, Gunicorn oder irgendetwas anderem auszuführen, das die WSGI-Schnittstelle verwendet, wird es explodieren. 

Hoffe das hilft!

BEARBEITEN: Wie unten bei @japhyr erwähnt, es ist nützlich, die expliziten Installationsanweisungen zu überprüfen: http://Django-debug-toolbar.readthedocs.org/de/1.0/installation.html#explicit-setup

150
mgrouchy

Ich habe reverse anstelle von reverse_lazy verwendet, um den URL-Parameter eines RedirectView festzulegen.

class YourRedirectView(RedirectView):
    url = reverse('reversed_url')

Da die Datei urls.py noch nicht initialisiert wurde, wird der Fehler angezeigt. Benutz einfach:

class YourRedirectView(RedirectView):
    url = reverse_lazy('reversed_url')
14
Tobias Lorenz

Nach einem Upgrade von Django 1.5 auf 1.6 habe ich ein ähnliches Problem gehabt. Ich bin mir nicht sicher, ob meine Erfahrung die gleiche ist wie Ihre.

Können Sie zunächst die Fehler nach oben scrollen und überprüfen, ob admin.autodiscover() das Problem verursacht? Alternativ kommentieren Sie diese Zeile aus und sehen Sie, ob eine Seite geladen wird.

Das Problem, das ich gefunden habe, war mit wsgi.py verbunden. Kannst du diese Datei veröffentlichen?

2
Luke

Ich habe ein sehr ähnliches Problem. Mein Projekt funktioniert gut auf dem Testserver, aber wenn ich versuche, mich bei gunicorn zu installieren, erhalte ich den gleichen Fehler "Nicht ordnungsgemäß konfiguriert".

Wenn ich die URLs auskommentiere, die eine andere URL-Datei enthalten (d. H. url(r'^admin/', include(admin.site.urls)),), funktionieren die übrigen URLs gut.

[UPDATE] Ich konnte es auf nur eine meiner eingeschlossenen URL-Dateien einschränken, konnte aber nichts Besonderes darüber finden. Die Einstellung Debug=False in meiner settings.py-Datei scheint jedoch für mich behoben worden zu sein.

0
Pablo Gomez

Stellen Sie außerdem sicher, dass Sie urlpatterns in der Datei, die Sie enthalten, haben und dass sie richtig geschrieben ist

0
surfer190