django- 异常值:没有名为 urls 的模块

django- Exception Value: No module named urls

我创建了一个 urlsviews 文件夹,如 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'),