我创建了一个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")
答案 0 :(得分:0)
由于您尝试使其像模块一样工作,请尝试添加__init__.py
在url和views文件夹中包含以下内容
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
次观看中导入任何内容。
答案 1 :(得分:0)
django架构的想法是为每个应用程序提供网址和视图的文件。请记住urls.py
存储应用中的所有网址,如果您想扩展它,请尝试创建另一个应用。我建议用tests.py
删除该文件夹,并将文件直接构造到DjangoApp文件夹中。
另外,正如上面的评论所说的那样,对于python来处理像模块这样的文件夹你应该创建一个名为__init__.py
的文件,请查看What is __init__.py for?。
答案 2 :(得分:0)
您的应用程序文件结构和配置存在问题。 请阅读: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'),