2011-04-02 30 views
1

我一直在與Django爭吵了幾個星期,把它放下來,拿起來,現在我確信這就是我想要使用的。我用django-cms創建了一個站點並運行,但對cmsplugin-news有一個小小的挑戰。django-cms和cmsplugin-news

我可以輸入新聞項目,列出最新的新聞項目,並且一切正常。但是,當我點擊單個新聞項目查看詳細信息時,我收到一個404頁面未找到錯誤。

這是我的urls.py和settings.py文件,分別。

URLS.PY

from django.conf.urls.defaults import * 
from django.contrib import admin 
from django.conf import settings 

admin.autodiscover() 

urlpatterns = patterns('', 
    url(r'^admin/', include(admin.site.urls)), 
    url(r'^', include('cms.urls')), 
    url(r'^news/', include('cmsplugin_news.urls')), 
) 

if settings.DEBUG: 
    urlpatterns = patterns('', 
     (r'^' + settings.MEDIA_URL.lstrip('/'), include('appmedia.urls')), 
    ) + urlpatterns 

SETTINGS.PY

# -*- coding: utf-8 -*- 
import os 

gettext = lambda s: s 

PROJECT_DIR = os.path.abspath(os.path.dirname(__file__)) 

DEBUG = True 
TEMPLATE_DEBUG = DEBUG 

ADMINS = (
    # ('Your Name', '[email protected]'), 
) 

MANAGERS = ADMINS 

LANGUAGES = [('en', 'en'),('jp','jp')] 
DEFAULT_LANGUAGE = 0 

DATABASES = { 
    'default': { 
     'ENGINE': 'django.db.backends.sqlite3', 
     'NAME': os.path.join(PROJECT_DIR, 'anadacms.db'), 
    } 
} 

# Local time zone for this installation. Choices can be found here: 
# http://en.wikipedia.org/wiki/List_of_tz_zones_by_name 
# although not all choices may be available on all operating systems. 
# On Unix systems, a value of None will cause Django to use the same 
# timezone as the operating system. 
# If running in a Windows environment this must be set to the same as your 
# system time zone. 
TIME_ZONE = 'America/Chicago' 

# Language code for this installation. All choices can be found here: 
# http://www.i18nguy.com/unicode/language-identifiers.html 
LANGUAGE_CODE = 'en-us' 

SITE_ID = 1 

# If you set this to False, Django will make some optimizations so as not 
# to load the internationalization machinery. 
USE_I18N = True 

# If you set this to False, Django will not format dates, numbers and 
# calendars according to the current locale 
USE_L10N = True 

# Absolute filesystem path to the directory that will hold user-uploaded files. 
# Example: "/home/media/media.lawrence.com/" 
MEDIA_ROOT = os.path.join(PROJECT_DIR, 'media') 

# URL that handles the media served from MEDIA_ROOT. Make sure to use a 
# trailing slash if there is a path component (optional in other cases). 
# Examples: "http://media.lawrence.com", "http://example.com/media/" 
MEDIA_URL = "http://portal.workpapers.pro/media/" 

# URL prefix for admin media -- CSS, JavaScript and images. Make sure to use a 
# trailing slash. 
# Examples: "http://foo.com/media/", "/media/". 
ADMIN_MEDIA_PREFIX = '/admin/media/' 

# Make this unique, and don't share it with anybody. 
SECRET_KEY = 'MYSECRETKEY' 

# 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 = (
    'django.middleware.common.CommonMiddleware', 
    'django.contrib.sessions.middleware.SessionMiddleware', 
    'django.middleware.csrf.CsrfViewMiddleware', 
    'django.contrib.auth.middleware.AuthenticationMiddleware', 
    'django.contrib.messages.middleware.MessageMiddleware', 
    'cms.middleware.page.CurrentPageMiddleware', 
    'cms.middleware.user.CurrentUserMiddleware', 
    'cms.middleware.toolbar.ToolbarMiddleware', 
    'cms.middleware.media.PlaceholderMediaMiddleware', 
) 

TEMPLATE_CONTEXT_PROCESSORS = (
    'django.core.context_processors.auth', 
    'django.core.context_processors.i18n', 
    'django.core.context_processors.request', 
    'django.core.context_processors.media', 
    'cms.context_processors.media', 
) 

CMS_TEMPLATES = (
    ('example.html', 'Basic Template'), 
    ('template_1.html', 'Template One'), 
    ('template_2.html', 'Template Two'), 
) 

ROOT_URLCONF = 'urls' 

CMS_APPLICATIONS_URLS = (
    ('cmsplugin_news.urls', 'News'), 
) 

CMS_NAVIGATION_EXTENDERS = (
    ('cmsplugin_news.navigation.get_nodes', 'News navigation'), 
) 

TEMPLATE_DIRS = (
    os.path.join(PROJECT_DIR, 'templates'), 
) 

INSTALLED_APPS = (
    'django.contrib.auth', 
    'django.contrib.contenttypes', 
    'django.contrib.sessions', 
    'django.contrib.sites', 
    'django.contrib.messages', 
    'django.contrib.admin', 
    'cms', 
    'menus', 
    'mptt', 
    'appmedia', 
    'south', 
    'cms.plugins.text', 
    'cms.plugins.picture', 
    'cms.plugins.link', 
    'cms.plugins.file', 
    'cms.plugins.snippet', 
    'cms.plugins.googlemap', 
    'publisher', 
    'cms.plugins.teaser', 
    'cms.plugins.video', 
    'cms.plugins.twitter', 
    'cmsplugin_facebook', 
    'cmsplugin_news', 
) 

這裏是爲cmsplugin新聞應用程序中的urls.py文件的鏈接: https://bitbucket.org/MrOxiMoron/cmsplugin-news/src/03ba1b86624b/cmsplugin_news/urls.py

+0

請告訴我這竟然放棄了404的網址是什麼?它會失敗,因爲它不匹配urlpattern或視圖拋出404。我們需要找出... – Spacedman 2011-04-02 11:44:39

+0

Spacedman >>謝謝。在app的cmsplugin-news部分的views.py中,文件是空白的。澄清,將添加cmsplugin新聞應用程序的urls.py文件。 – kirtcathey 2011-04-02 13:50:58

+0

爲了更好地回答你的問題,引發404的網址是:http://www.mydomain.com/news/2011/04/01/article-slug/ – kirtcathey 2011-04-02 14:08:12

回答

3

的問題是非常簡單:cms.urls應該總是最後在你的urlconf中,因爲它會吃每個請求。

改變你的urls.py這應該修復它::

from django.conf.urls.defaults import * 
from django.contrib import admin 
from django.conf import settings 

admin.autodiscover() 

urlpatterns = patterns('', 
    url(r'^admin/', include(admin.site.urls)), 
    url(r'^news/', include('cmsplugin_news.urls')), 
    # MUST BE LAST!!! 
    url(r'^', include('cms.urls')), 
) 

if settings.DEBUG: 
    urlpatterns = patterns('', 
     (r'^' + settings.MEDIA_URL.lstrip('/'), include('appmedia.urls')), 
    ) + urlpatterns