/home/ 导入错误,没有名为 home.urls 的模块
ImportError at /home/, No module named home.urls
Python 2.7 + Django 1.7
我得到:
Page not found (404)
Request Method: GET
Request URL: http://localhost:8000/home/
Using the URLconf defined in home.urls, Django tried these URL patterns, in this order:
^(?P<pk>\d+)/home/$ [name='home']
^(?P<pk>\d+)/services/$ [name='services']
^(?P<pk>\d+)/contact/$ [name='contact']
The current URL, home/, didn't match any of these.
You're seeing this error because you have DEBUG = True in your Django settings file. Change that to False, and Django will display a standard 404 page.
home/urls.py:
from django.conf.urls import patterns, include, url
from django.contrib import admin
from home import views
urlpatterns = patterns('',
url(r'^(?P<pk>\d+)/home/$', views.Home(), name='home'),
url(r'^(?P<pk>\d+)/services/$', views.Services(), name='services'),
url(r'^(?P<pk>\d+)/contact/$', views.Contact(), name='contact')
)
mysite/urls.py:
from django.conf import settings
from django.conf.urls.static import static
from django.conf.urls import patterns, include, url
from django.contrib import admin
admin.autodiscover()
urlpatterns = patterns('',
url(r'^admin/', include(admin.site.urls)),
url(r'^home/', include('mysite.home.urls', namespace="home")),
url(r'^services/', include('home.urls', namespace="services")),
url(r'^contact/', include('home.urls', namespace="contact"))
)
这是为什么?
项目结构:
sitename
db.sqlite3
home
__init.py
admin.py
models.py
static
home.html
services.html
contact.html
urls.py
views.py
manage.py
mysite
__init.py
settings.py
urls.py
wsgi.py
这不包括一些 pyc 或 pycache 文件。 (我需要添加更多细节来编辑所以我想我会添加更多文本。也许这就是它想要的。我不知道。)
扩展来自@Ngenator 的评论,您在主 urls.py 文件中的 url 模式将所有内容路由到一个 url 结构,前面有:
- 管理员
- 家
- 服务
- 联系
并阅读/猜测您正在尝试做什么,您可能不需要:
(?P<pk>\d+)
当您想在 views.py 文件中获取参数 pk 时,您可以使用它,例如:
def my_view(request, pk):
因此,我的猜测是您可以在 mysite/urls.py 文件夹中定义 url 模式。
在我看来,在 home/urls.py 文件中定义服务和联系人是没有意义的。如果您确实拥有家庭、联系人、管理员等应用程序,您可能只需要所有其他命名空间。
这有意义吗?您不需要为每个应用程序定义 urls.py。如果你想为 home/urls.py 保留 urls.py 结构,同时保持像 http://localhost.com:8000/home/ 这样的 url 结构,那么在你的 home/urls.py 中你可以这样做类似于:
url(r'^', home.views.Home(), name='home'),
假设您的 home/views.py 文件具有如下函数:
def Home(request):
home/urls.py:
from django.conf.urls import patterns, include, url
from django.contrib import admin
from home import views
urlpatterns = patterns('',
url(r'^home/$', views.Home(), name='home'),
url(r'^services/$', views.Services(), name='services'),
url(r'^contact/$', views.Contact(), name='contact')
)
mysite/urls.py:
from django.conf import settings
from django.conf.urls.static import static
from django.conf.urls import patterns, include, url
from django.contrib import admin
admin.autodiscover()
urlpatterns = patterns('',
url(r'^admin/', include(admin.site.urls)),
url(r'^', include('home.urls', namespace='mysite')),
)
我不确定您是否真的想要 pk
用于您的家庭应用程序,但如果您确实需要,只需将您的根 urlconf 更改为此即可。
url(r'^(?P<pk>\d+)/', include('home.urls', namespace='mysite')),
您可以在此处了解 urlconf 文档:https://docs.djangoproject.com/en/1.7/topics/http/urls/#including-other-urlconfs
Python 2.7 + Django 1.7
我得到:
Page not found (404)
Request Method: GET
Request URL: http://localhost:8000/home/
Using the URLconf defined in home.urls, Django tried these URL patterns, in this order:
^(?P<pk>\d+)/home/$ [name='home']
^(?P<pk>\d+)/services/$ [name='services']
^(?P<pk>\d+)/contact/$ [name='contact']
The current URL, home/, didn't match any of these.
You're seeing this error because you have DEBUG = True in your Django settings file. Change that to False, and Django will display a standard 404 page.
home/urls.py:
from django.conf.urls import patterns, include, url
from django.contrib import admin
from home import views
urlpatterns = patterns('',
url(r'^(?P<pk>\d+)/home/$', views.Home(), name='home'),
url(r'^(?P<pk>\d+)/services/$', views.Services(), name='services'),
url(r'^(?P<pk>\d+)/contact/$', views.Contact(), name='contact')
)
mysite/urls.py:
from django.conf import settings
from django.conf.urls.static import static
from django.conf.urls import patterns, include, url
from django.contrib import admin
admin.autodiscover()
urlpatterns = patterns('',
url(r'^admin/', include(admin.site.urls)),
url(r'^home/', include('mysite.home.urls', namespace="home")),
url(r'^services/', include('home.urls', namespace="services")),
url(r'^contact/', include('home.urls', namespace="contact"))
)
这是为什么?
项目结构:
sitename
db.sqlite3
home
__init.py
admin.py
models.py
static
home.html
services.html
contact.html
urls.py
views.py
manage.py
mysite
__init.py
settings.py
urls.py
wsgi.py
这不包括一些 pyc 或 pycache 文件。 (我需要添加更多细节来编辑所以我想我会添加更多文本。也许这就是它想要的。我不知道。)
扩展来自@Ngenator 的评论,您在主 urls.py 文件中的 url 模式将所有内容路由到一个 url 结构,前面有:
- 管理员
- 家
- 服务
- 联系
并阅读/猜测您正在尝试做什么,您可能不需要:
(?P<pk>\d+)
当您想在 views.py 文件中获取参数 pk 时,您可以使用它,例如:
def my_view(request, pk):
因此,我的猜测是您可以在 mysite/urls.py 文件夹中定义 url 模式。
在我看来,在 home/urls.py 文件中定义服务和联系人是没有意义的。如果您确实拥有家庭、联系人、管理员等应用程序,您可能只需要所有其他命名空间。
这有意义吗?您不需要为每个应用程序定义 urls.py。如果你想为 home/urls.py 保留 urls.py 结构,同时保持像 http://localhost.com:8000/home/ 这样的 url 结构,那么在你的 home/urls.py 中你可以这样做类似于:
url(r'^', home.views.Home(), name='home'),
假设您的 home/views.py 文件具有如下函数:
def Home(request):
home/urls.py:
from django.conf.urls import patterns, include, url
from django.contrib import admin
from home import views
urlpatterns = patterns('',
url(r'^home/$', views.Home(), name='home'),
url(r'^services/$', views.Services(), name='services'),
url(r'^contact/$', views.Contact(), name='contact')
)
mysite/urls.py:
from django.conf import settings
from django.conf.urls.static import static
from django.conf.urls import patterns, include, url
from django.contrib import admin
admin.autodiscover()
urlpatterns = patterns('',
url(r'^admin/', include(admin.site.urls)),
url(r'^', include('home.urls', namespace='mysite')),
)
我不确定您是否真的想要 pk
用于您的家庭应用程序,但如果您确实需要,只需将您的根 urlconf 更改为此即可。
url(r'^(?P<pk>\d+)/', include('home.urls', namespace='mysite')),
您可以在此处了解 urlconf 文档:https://docs.djangoproject.com/en/1.7/topics/http/urls/#including-other-urlconfs