ImportError:没有名为myapp_o.urls

时间:2017-03-16 14:27:03

标签: python django django-oscar

我正在研究一个django-oscar项目。我一直在寻找解决这个问题的方法。虽然,我在这里遇到过类似的问题,但我仍然无法解决问题。

我正在尝试创建其他网页,例如' about'和' contacts'。我已经检查了仪表板上的页面创建,但似乎无法完全按照我的要求进行操作。我希望能够将这些页面放在页脚区域。我能够将在仪表板上创建的这些页面显示到我的页脚,但只显示文本似乎很简单。想知道我是否可以做得更多。

我在我的apps文件夹中创建了一个应用。这是文件夹结构:

folder structure

Full folder structure

这是我的环境安装 -

pip freeze requirements.txt

    Babel==2.3.4<
    beautifulsoup4==4.5.1
    colorama==0.3.7
    coverage==3.7.1
    coveralls==0.4.4
    detox==0.10.0
    Django==1.9.12
    django-appconf==1.0.2
    django-compressor==1.6
    django-countries==4.0
    django-debug-toolbar==1.5
    django-extra-views==0.6.4
    django-haystack==2.5.1
    django-localflavor==1.3
    django-nose==1.4.2
    django-oscar==1.3
    -e git://github.com/tangentlabs/django-oscar-      paypal.git@76542cefa67170b10694ab431a0b35408d99b16e#egg=django_oscar_paypal
   django-static-precompiler==1.5
   django-tables2==1.0.7
   django-treebeard==4.1.0
   django-webtest==1.7.7
   django-widget-tweaks==1.4.1
   docopt==0.6.2
   enum-compat==0.0.2
   enum34==1.1.6
   eventlet==0.20.0
   factory-boy==2.7.0
   fake-factory==0.7.2
   flake8==2.2.3
   funcsigs==1.0.2
   greenlet==0.4.11
   ipaddress==1.0.17
   mccabe==0.5.2
   mock==1.0.1
   mod-wsgi==4.5.11
   nose==1.3.7
   pbr==1.10.0
   pep8==1.7.0
   phonenumbers==7.7.5
   Pillow==3.4.2
   pinocchio==0.4.1
   pluggy==0.3.1
   purl==1.3
   py==1.4.31
   pycountry==16.11.27.1
   pyflakes==1.3.0
   pytest==3.0.1
   pytest-cov==2.3.1
   pytest-django==3.0.0
   python-dateutil==2.6.0
   pytz==2016.10
   PyYAML==3.12
   requests==2.12.3
   six==1.10.0
   sorl-thumbnail==12.4a1
   sqlparse==0.2.2
   tox==2.1.0
   Unidecode==0.4.19
   virtualenv==15.1.0
   waitress==1.0.1
   WebOb==1.6.3
   WebTest==2.0.16`

这是myapp views.py

from django.http import HttpResponse
from django.core.urlresolvers import reverse


def about(request):
   return HttpResponse(request, "my about page", {})

def contacts(request):
   return HttpResponse(request, "my contact page", {})

这是apps.myapp urls.py

from django.conf.urls import url

from django.conf.urls import patterns, include, url
from django.conf.urls.i18n import i18n_patterns`

from . import views
from apps.myapp import views



urlpatterns = patterns ('',
  url(r'^en-gb/contacts/', views.contacts, name='contacts'),
  url(r'^/about/', views.about, name='about'),

)

这里是mysite(root)urls.py

from django.conf.urls import patterns, include, url
from django.conf.urls.i18n import i18n_patterns
from django.conf import settings
from django.contrib import admin
from django.contrib.staticfiles.urls import staticfiles_urlpatterns
from django.conf.urls.static import static

from apps.app import application
from paypal.payflow.dashboard.app import application as payflow
from paypal.express.dashboard.app import application as express_dashboard
admin.autodiscover()

from apps.app import myapp_o



 '''everything else has to have the include apart from the admin'''

 urlpatterns = patterns
 [
   '',
   (r'^admin/', admin.site.urls),
   url(r'^i18n/', include('django.conf.urls.i18n')),
   url(r'^myapp_o/', include('apps.myapp_o.urls')),
]

urlpatterns += i18n_patterns('',
  # PayPal Express integration...
  (r'^checkout/paypal/', include('paypal.express.urls')),
  # Dashboard views for Payflow Pro
  (r'^dashboard/paypal/payflow/', include(payflow.urls)),
  # Dashboard views for Express
  (r'^dashboard/paypal/express/', include(express_dashboard.urls)),
  (r'', include(application.urls)),
  '''(r'^myapp_o/', include('myapp_o.urls')),'''

  )

 if settings.DEBUG:
   urlpatterns += staticfiles_urlpatterns()
   urlpatterns += static(
      settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)

有人可以分享并告诉我哪里出错了吗?或者在仪表板中有更好的做法吗?

由于

需要从我的设置中添加信息

导入os

 INSTALLED_APPS = [
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.sites',
    'django.contrib.messages',
    'django.contrib.admin',
    'django.contrib.flatpages',
    'django.contrib.staticfiles',
    'mod_wsgi.server',
    # External apps
    # 1.5.7 still ships with South migrations in the wrong folder,
    # 1.5.8 contains a fix. Upgrade when released.
    # 'django_extensions',
   'debug_toolbar',
    # Apps from oscar
   'paypal',
   'compressor',
   'widget_tweaks',

   ]



from oscar import get_core_apps
INSTALLED_APPS = INSTALLED_APPS + get_core_apps([
    'apps.shipping',
    'apps.checkout',
    'apps.myapp',])

谢谢。

1 个答案:

答案 0 :(得分:0)

让我们先检查你的代码:

en

,你不应该像这样导入。

apps/myapp/urls.py

因为后来from . import views from apps.myapp import views 会覆盖第一个views var。因此,应使用viewsfrom . import views更改您的代码,以便明确导入。

其次,在Django 1.8之后,from views import about, contacts不再使用urlpatterns。您应该考虑在Django1.10(不推荐使用1.10 patterns之后)使用url函数来使用您的代码。

因此您的代码可以像这样更改:

patterns

我还会在您的网址末尾添加urlpatterns = [ url(r'^en-gb/contacts/$', views.contacts, name='contacts'), url(r'^about/$', views.about, name='about'), ] ,以便与用户请求中的网址完全匹配。

第三,当我用Documentation搜索django文档时,

您可以使用django的$urls包括String

我认为你的网址可能是这样的:

include('paypal.express.urls')

请记住,在使用字符串导入时,您不必从应用程序导入视图。 评论这件事是否有效。