6

我想在我的网站上包含一个电子商务门户,并且我已经按照Django-Oscar文档中给出的“创建您的商店页面”中给出的所有内容完成了所有操作,只是在 urls.py中而不是

url(r'', include(application.urls)),

我已经添加了

url(r'^buy/', include(application.urls)),

但问题是,当我点击 url 时,它既没有显示任何内容,也没有给出错误。

知道可能是什么问题吗?

可能是一些 url 发生冲突或其他一些微不足道的事情,但我无法理解从哪里开始调试。

文件urls.py

from django.conf.urls import patterns, include, url
from django.contrib import admin
from view import AboutusView, TwentySevenView
import apps.users.views
from django.conf import settings

    #oscar urls
    from oscar.app import application

    admin.site.site_header = ''
    urlpatterns = patterns('',
                           # Examples:
                           # url(r'^$', 'torquehp.views.home', name='home'),
                           # url(r'^users/', include('users.urls')),
                           url(r'^i18n/', include('django.conf.urls.i18n')),
                           url(r'^admin/', include(admin.site.urls)),
                           url(r'^about-us/$', AboutusView.as_view(), name="about-us"),
                           url(r'^24x7/$', TwentySevenView.as_view(), name="24x7"),
                           url(r'^$', apps.users.views.user_home, name="home"),
                           url(r'^markdown/', include('django_markdown.urls')),
                           url(r'^users/', include('apps.users.urls')),
                           url(r'^doorstep/', include('apps.doorstep.urls')),
                           url(r'^cars/', include('apps.cars.urls')),
                           url('', include('social.apps.django_app.urls', namespace='social')),
                           # urls for zinnia
                           url(r'^blog/', include('zinnia.urls', namespace='zinnia')),
                           url(r'^comments/', include('django_comments.urls')),
                           url(r'^media/(?P<path>.*)$', 'django.views.static.serve',
                               {'document_root': settings.MEDIA_ROOT, }),
                           # oscar URLs
                           url(r'^buy/', include(application.urls)),
    )

文件设置.py

import os
import sys
from oscar import get_core_apps
from oscar import OSCAR_MAIN_TEMPLATE_DIR
from oscar.defaults import *

BASE_DIR = os.path.dirname(os.path.dirname(__file__))
location = lambda x: os.path.join(
    os.path.dirname(os.path.realpath(__file__)), x)

# sys.path.insert(0, os.path.join(BASE_DIR, 'apps'))  # to store apps in apps/ directory


# Quick-start development settings - unsuitable for production
# See https://docs.djangoproject.com/en/1.7/howto/deployment/checklist/

# SECURITY WARNING: keep the secret key used in production secret!
SECRET_KEY = ''

# SECURITY WARNING: don't run with debug turned on in production!
DEBUG = True

TEMPLATE_DEBUG = True

ALLOWED_HOSTS = []


# Application definition

INSTALLED_APPS = [
    'django.contrib.auth',
    'django.contrib.admin',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',
    'django.contrib.flatpages',
    'apps.users',
    'apps.doorstep',
    'apps.cars',
    'django_markdown',
    'social.apps.django_app.default',
    'django.contrib.sites',
    'django_comments', 
    'mptt',             
    'tagging',          
    'zinnia',           
    'compressor',
    ] + get_core_apps()
# specifying the comments app
# COMMENTS_APP = 'zinnia_threaded_comments'

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',
    'oscar.apps.basket.middleware.BasketMiddleware',
    'django.contrib.flatpages.middleware.FlatpageFallbackMiddleware',
)

# Authentication backend used by python-social-auth
AUTHENTICATION_BACKENDS = (
    'social.backends.facebook.FacebookOAuth2',
    'social.backends.google.GoogleOAuth2',
    'django.contrib.auth.backends.ModelBackend',
    'oscar.apps.customer.auth_backends.EmailBackend',
)

TEMPLATE_CONTEXT_PROCESSORS = (
    "social.apps.django_app.context_processors.backends",
    "social.apps.django_app.context_processors.login_redirect",
    "django.contrib.auth.context_processors.auth",
    "django.contrib.messages.context_processors.messages",
    "django.core.context_processors.i18n",
    "django.core.context_processors.request",
    "zinnia.context_processors.version",
    "django.core.context_processors.debug",
    "django.core.context_processors.media",
    "django.core.context_processors.static",
    "django.core.context_processors.tz",
    'oscar.apps.search.context_processors.search_form',
    'oscar.apps.promotions.context_processors.promotions',
    'oscar.apps.checkout.context_processors.checkout',
    'oscar.apps.customer.notifications.context_processors.notifications',
    'oscar.core.context_processors.metadata'
)

# TEMPLATE_LOADERS = (
#     'app_namespace.Loader',
# )

ROOT_URLCONF = 'torquehp.urls'

WSGI_APPLICATION = 'torquehp.wsgi.application'


# Database
# https://docs.djangoproject.com/en/1.7/ref/settings/#databases

DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.mysql',
        'NAME': "",
        'USER': '',
        'PASSWORD': '',
        'HOST': 'localhost',
        'PORT': '3306'
    }
}

# Internationalization

LANGUAGE_CODE = 'en-us'

TIME_ZONE = 'UTC'

USE_I18N = True

USE_L10N = True

USE_TZ = True

LOGIN_URL = '/users/login/'

# Static files (CSS, JavaScript, Images)
# https://docs.djangoproject.com/en/1.7/howto/static-files/

STATIC_URL = '/static/'
STATIC_ROOT = os.path.join(BASE_DIR, '/static/')
MEDIA_ROOT = os.path.join(BASE_DIR, 'media/')
MEDIA_URL = "/media/"
TEMPLATE_DIRS = (
    os.path.join(BASE_DIR, 'templates').replace('\\', '/'),
    location('templates'),
    OSCAR_MAIN_TEMPLATE_DIR,
)

STATICFILES_DIRS = (
    os.path.join(BASE_DIR, 'staticfiles'),


)
REGISTRATION_INVALID = 50
MESSAGE_TAGS = {
    REGISTRATION_INVALID: 'InvalidDetails',
}
# temporary , should not be in settings file
SOCIAL_AUTH_FACEBOOK_KEY = ""
SOCIAL_AUTH_FACEBOOK_SECRET = ""
SOCIAL_AUTH_FACEBOOK_SCOPE = ['email']

SOCIAL_AUTH_GOOGLE_OAUTH2_KEY = ""
SOCIAL_AUTH_GOOGLE_OAUTH2_SECRET = ""

LOGIN_REDIRECT_URL = '/blog/'

# ------------------------------------ #
# Settings for sending email #

EMAIL_USE_TLS = True
EMAIL_HOST = 'smtp.gmail.com'
EMAIL_PORT = 587
EMAIL_HOST_USER = ''
EMAIL_HOST_PASSWORD = ''
DEFAULT_FROM_EMAIL = EMAIL_HOST_USER
SERVER_EMAIL = EMAIL_HOST_USER
EMAIL_BACKEND = 'django.core.mail.backends.smtp.EmailBackend'
# ------------------------------------ #


# site id for django sites framework
SITE_ID = 1

# configuration settings for  django-zinnia
ZINNIA_PING_EXTERNAL_URLS = False
ZINNIA_SAVE_PING_DIRECTORIES = False
ZINNIA_MARKUP_LANGUAGE = 'markdown'
ZINNIA_UPLOAD_TO = 'uploads/zinnia/'
# TimeZone Settings
USE_TZ = True

# ------------------------ #
# django s=oscar search settings
HAYSTACK_CONNECTIONS = {
    'default': {
        'ENGINE': 'haystack.backends.simple_backend.SimpleEngine',
    },
}

截图:

http://localhost:8000/购买/ 在此处输入图像描述

http://localhost:8000/buy/catalogue/

在此处输入图像描述

4

5 回答 5

5

我看到在你的第二个屏幕截图中localhost:8000/buy/catalogue/你实际上得到了一个结果。似乎您还没有定义自己的模板或需要修复您的TEMPLATE_DIRSTEMPLATE_CONTEXT_PROCESSORS设置。

我没有用过 oscar,但你在屏幕上看到的东西对我来说似乎是一个模板加载问题。

查看他们关于设置 template_context_processors 的文档

你可以发布你的设置吗?

更新:

查看您的设置后,template_context_processors 看起来是正确的。接下来我查看了 oscar 的模板,它们似乎在没有限定 oscar 目录的情况下进行了扩展。例如,layout.html (/oscar/templates/oscar/layout.html) 这样做:

{% extends 'base.html' %}

现在,如果您在自己的项目目录中也有一个“base.html”文件,比如 project_dir/templates/base.html,那么它可能会使用它。您可以尝试临时重命名该文件(如果存在)并看看会发生什么吗?

于 2015-05-06T23:30:28.327 回答
1

网址.py

url(r'^buy/', include("app.urls")),

然后在您的应用程序目录下创建一个名为urls.py

app/urls.py

# this is your “http://localhost:8000/buy/”
url(r'^$', ViewName.as_view(), name="thename"),
于 2015-05-02T22:09:25.440 回答
0

在 app/urls.py 添加以下行:

url(r'^$',views.index,name='index'),

这会将您重定向到 app/views.py 中的 index 函数,在 app/views.py 中执行以下操作:

def index(request):
  #Your logic here
  return render(request,'urpoll/index.html'{'category':categorys,'ques':ques,'url':url})

这将使用类别、问题、网址呈现 index.html。在 index.HTML 中是这样的:

{{ if category }}
{{ category }}
{{ endif }}

我希望这将有所帮助。

于 2015-05-06T18:56:54.723 回答
0

也许您与模板有命名冲突。我假设您正在使用的 Django 的默认模板加载器可能有点不直观。当您向它询问具有给定名称的模板时,它会INSTALLED_APPS按顺序通过您的设置中的元组,检查每个模板文件夹。如果在两个不同的应用程序中有两个具有相同路径的模板,它将始终采用它找到的第一个。

这就是为什么django 文档中的建议是将模板“命名空间”,方法是将它们全部保存在模板文件夹中的另一个具有应用程序名称的文件夹中。Oscar 这样做了,所以他们的模板oscar/templates/oscarbase.html.

于 2015-05-10T15:34:14.077 回答
0

问题是 django-oscar 并不意味着包含在子路径下,例如/buy/. 在他们的文档中,他们的示例显示将其安装为:

url(r'', include(application.urls)),

如果查看为提供返回值的的来源,您会发现它没有提供要匹配的 urlpattern ,而这正是您在尝试查看的 URL 处需要匹配的内容。get_urls()application.urlsr'^$'

简而言之,您应该完全按照文档的建议进行操作,否则您会得到意想不到的结果。

于 2015-05-12T15:07:13.773 回答