我正在进行简单的表单处理。我的项目名称是'mysite',我使用startapp创建了文件夹'books'。我在'mysite'文件夹中创建了一个名为'templates'的文件夹。在'templates'中,我做了一个搜索表单的html文件及其名称为“search_file.html”。 制作该html文件的代码如下所示。
<html>
<head>
<title>Search</title>
</head>
<body>
<form action="/search/" method="get">
<input type="text" name="q">
<input type="submit" value="Search">
</form>
</body>
</html>
然后,我在views.py中写了以下代码,该代码位于'books'文件夹中。
from django.shortcuts import render
def search_form(request):
return render(request, 'search_form.html')
之后我在urls.py中编写了代码,该代码位于'mysite'文件夹中,如下所示。
from mysite.books import views
urlpatterns = patterns('',
url(r'^search-form/$', views.search_form),
)
我的文件树如下所示:
主文件夹是'mysite'并且在其中:
- books
- __init__.py
- admin.py
- models.py
- tests.py
- views.py
- mysite
- __init__.py
- settings.py
- urls.py
- wsgi.py
- templates
- search_form.html
- manage.py
但是,当我在浏览器中运行时,错误似乎提到了这些事情。
/ search-form /
中的ImportError没有名为books的模块
此错误的解决方案是什么?
答案 0 :(得分:1)
最好的解决方案是将您的“书籍”包移到mysite / mysite /中并将书籍添加到您的设置中.INSTALLED_APPS
但是如果你想保持它那么:
你的主“mysite”文件夹不是python包。这意味着您需要在主文件夹中添加 init .py,请参阅下面的内容:
你应该:
mysite/
books/
__init__.py
admin.py
models.py
tests.py
views.py
templates/
search_form.html
__init__.py
settings.py
urls.py
wsgi.py
manage.py
修改manage.py
并将mysite.settings
替换为settings
修改settings.py
并将ROOT_URLCONF = 'mysite.urls'
替换为ROOT_URLCONF = 'urls'
,将WSGI_APPLICATION = 'mysite.wsgi.application'
替换为WSGI_APPLICATION = 'wsgi.application'
将<path to>/templates
添加到您的设置.TEMPLATE_DIRS
将books
添加到您的INSTALLED_APPS
修改wsgi.py
并将mysite.settings
替换为settings
现在你可以从books import views
另外如您所见,您可以删除mysite / mysite文件夹
答案 1 :(得分:0)
您是否在文件夹中创建了一个名为__init__.py
的文件?