django- 异常值:没有名为 urls 的模块
django- Exception Value: No module named urls
我创建了一个 urls
和 views
文件夹,如 templates
,但它不起作用。
我收到错误:
Exception Value: No module named urls
这是我的项目的样子:
requirements.txt:
Django==1.6.5
pymongo==2.8
.
├── DjangoProject
│ ├── DjangoProject
│ │ ├── app
│ │ │ ├── __init__.py
│ │ │ ├── __init__.pyc
│ │ │ ├── models.py
│ │ │ ├── models.pyc
│ │ │ ├── templates
│ │ │ ├── tests.py
│ │ │ ├── urls
│ │ │ │ └── test.py
│ │ │ └── views
│ │ │ └── test.py
│ │ ├── __init__.py
│ │ ├── __init__.pyc
│ │ ├── settings.py
│ │ ├── settings.pyc
│ │ ├── urls.py
│ │ ├── wsgi.py
│ │ └── wsgi.pyc
│ └── manage.py
└── requirements.txt
settings.py 文件:
INSTALLED_APPS = (
'DjangoProject.app',
........
)
ROOT_URLCONF = 'DjangoProject.app.urls'
DjangoProject/urls.py :
urlpatterns = patterns('',
url(r'^$', include('DjangoProject.app.urls')),
url(r'^admin/', include(admin.site.urls)),
)
app/urls/test.py :
from django.conf.urls import patterns, url
urlpatterns = patterns('DjangoProject.app.views.test',
url(r'^/create/$','first_view',name='first_view'),
)
app/views/test.py :
from django.shortcuts import render, render_to_response
from django.http import HttpResponse
from django.template import loader
from django.template import RequestContext
def first_view(request):
return HttpResponse("Hi")
因为你想让它像模块一样工作,所以尝试添加 __init__.py
在 url 和具有以下内容的视图文件夹中
from .test import *
根据您的问题进一步解释 __init__.py
将放在 DjangoProject/DjangoProject/app/urls/
和 DjangoProject/DjangoProject/app/views/
中。
要使用 ROOT_URLCONF = 'DjangoProject.app.urls'
,您还必须将所有内容导入 __init__.py
文件。
对于导入视图的用例,如此处所示。
from django.conf.urls import patterns, url
urlpatterns = patterns('DjangoProject.app.views.test',
url(r'^/create/$','first_view',name='first_view'),
)
您甚至不必在 __init__.py
视图中导入任何内容。
django 架构的想法是为每个应用程序提供一个用于 url 和视图的文件。请记住,urls.py
存储应用程序中的所有 url,如果您想扩展它,请尝试创建另一个应用程序。我的建议是使用 tests.py
删除该文件夹并将文件直接构建到您的 DjangoApp 文件夹中。
此外,正如上面的评论所说的那样,为了 python 将文件夹视为模块,您应该创建一个名为 __init__.py
的文件,查看 What is __init__.py for?.
您的应用程序文件结构和配置有问题。
读这个:https://docs.djangoproject.com/en/1.11/intro/tutorial01/
例如:
您应该将 view.py 中的函数分配给它的 url 因此在这一行中:
url(r'^/create/$','first_view',name='first_view'),
改为:
url(r'^/create/$', views.first_view, name='first_view'),
我创建了一个 urls
和 views
文件夹,如 templates
,但它不起作用。
我收到错误:
Exception Value: No module named urls
这是我的项目的样子:
requirements.txt:
Django==1.6.5
pymongo==2.8
.
├── DjangoProject
│ ├── DjangoProject
│ │ ├── app
│ │ │ ├── __init__.py
│ │ │ ├── __init__.pyc
│ │ │ ├── models.py
│ │ │ ├── models.pyc
│ │ │ ├── templates
│ │ │ ├── tests.py
│ │ │ ├── urls
│ │ │ │ └── test.py
│ │ │ └── views
│ │ │ └── test.py
│ │ ├── __init__.py
│ │ ├── __init__.pyc
│ │ ├── settings.py
│ │ ├── settings.pyc
│ │ ├── urls.py
│ │ ├── wsgi.py
│ │ └── wsgi.pyc
│ └── manage.py
└── requirements.txt
settings.py 文件:
INSTALLED_APPS = (
'DjangoProject.app',
........
)
ROOT_URLCONF = 'DjangoProject.app.urls'
DjangoProject/urls.py :
urlpatterns = patterns('',
url(r'^$', include('DjangoProject.app.urls')),
url(r'^admin/', include(admin.site.urls)),
)
app/urls/test.py :
from django.conf.urls import patterns, url
urlpatterns = patterns('DjangoProject.app.views.test',
url(r'^/create/$','first_view',name='first_view'),
)
app/views/test.py :
from django.shortcuts import render, render_to_response
from django.http import HttpResponse
from django.template import loader
from django.template import RequestContext
def first_view(request):
return HttpResponse("Hi")
因为你想让它像模块一样工作,所以尝试添加 __init__.py
在 url 和具有以下内容的视图文件夹中
from .test import *
根据您的问题进一步解释 __init__.py
将放在 DjangoProject/DjangoProject/app/urls/
和 DjangoProject/DjangoProject/app/views/
中。
要使用 ROOT_URLCONF = 'DjangoProject.app.urls'
,您还必须将所有内容导入 __init__.py
文件。
对于导入视图的用例,如此处所示。
from django.conf.urls import patterns, url
urlpatterns = patterns('DjangoProject.app.views.test',
url(r'^/create/$','first_view',name='first_view'),
)
您甚至不必在 __init__.py
视图中导入任何内容。
django 架构的想法是为每个应用程序提供一个用于 url 和视图的文件。请记住,urls.py
存储应用程序中的所有 url,如果您想扩展它,请尝试创建另一个应用程序。我的建议是使用 tests.py
删除该文件夹并将文件直接构建到您的 DjangoApp 文件夹中。
此外,正如上面的评论所说的那样,为了 python 将文件夹视为模块,您应该创建一个名为 __init__.py
的文件,查看 What is __init__.py for?.
您的应用程序文件结构和配置有问题。 读这个:https://docs.djangoproject.com/en/1.11/intro/tutorial01/
例如: 您应该将 view.py 中的函数分配给它的 url 因此在这一行中:
url(r'^/create/$','first_view',name='first_view'),
改为:
url(r'^/create/$', views.first_view, name='first_view'),