首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >ImportError:没有名为myapp_o.urls的模块

ImportError:没有名为myapp_o.urls的模块
EN

Stack Overflow用户
提问于 2017-03-16 22:27:03
回答 1查看 2.6K关注 0票数 2

我有一个姜戈-奥斯卡的项目,我正在做。我一直在寻找解决这个问题的方法。虽然,我在这里遇到了类似的问题,但我仍然无法解决这个问题。

我正在尝试创建其他页面,如“关于”和“联系人”。我已经检查了仪表板的页面创建,但似乎不能确切地做我想要的。我希望能够将这些页面放在页脚区域。我能够将这些在仪表板上创建的页面显示到我的页脚,但它似乎很简单,只显示文本。想知道我能不能做得更多。

我已经在我的应用文件夹中创建了一个应用。下面是文件夹结构:

这是我的env安装-

pip冻结requirements.txt

代码语言:javascript
复制
    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`

下面是我的应用程序views.py

代码语言:javascript
复制
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

代码语言:javascript
复制
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'),

)

下面是我的站点(根目录) urls.py

代码语言:javascript
复制
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)

有没有人可以分享一下,告诉我哪里出错了?或者在仪表板中做这件事有更好的方法吗?

谢谢

夏娃

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

导入操作系统

代码语言:javascript
复制
 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',])

谢谢。

EN

回答 1

Stack Overflow用户

发布于 2017-03-16 22:57:26

让我们先检查一下你的代码:

apps/myapp/urls.py上,您不应该像这样导入。

代码语言:javascript
复制
from . import views
from apps.myapp import views

因为后来的views覆盖了第一个views变量。因此,您的代码应该使用from . import viewsfrom views import about, contacts进行更改,以获得清晰的导入。

其次,在Django 1.8之后,urlpatterns不再使用patterns。你应该考虑在Django1.10之后(在1.10 patterns被弃用之后)使用url函数来使用你的代码。

所以你的代码可以像这样修改:

代码语言:javascript
复制
urlpatterns = [
  url(r'^en-gb/contacts/$', views.contacts, name='contacts'),
  url(r'^about/$', views.about, name='about'),
]

我还添加$结束您的网址,以完全匹配的网址从用户的请求。

第三,当我用i18n_patterns搜索姜戈文档时,

您可以将django的urlsString包含一起使用,如include('paypal.express.urls')

我认为你的urls可以是这样的:

代码语言:javascript
复制
urlpatterns = [
    url(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...
  url(r'^checkout/paypal/', include('paypal.express.urls')),
  # Dashboard views for Payflow Pro
  url(r'^dashboard/paypal/payflow/', include(payflow.urls)),
  # Dashboard views for Express
  url(r'^dashboard/paypal/express/', include(express_dashboard.urls)),
  url(r'', include('apps.myapp_o.urls')),    
  )

请记住,当您使用字符串导入时,不必从app导入视图。如果这个东西不能工作,请发表评论。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/42836880

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档