第一个django项目,显示错误没有名为'polls'的模块

时间:2016-10-18 05:05:51

标签: python django

我关注了Django官方文档,我正在编写投票应用程序。

在mysite包中,它表示当我运行它时没有名为'polls'的模块,我该如何解决呢?

我的python是3.6,我的Django是1.10.2,

这是我的目录

├── db.sqlite3
├── manage.py
├── mysite
│   ├── __init__.py
│   
│   ├── __pycache__
│   ├── settings.py
│   
│   ├── urls.py
│   └── wsgi.py
└── polls
    ├── __init__.py
    ├── __pycache__
    ├── admin.py
    ├── models.py
    ├── tests.py
    ├── urls.py
    ├── views.py
    └── apps.py

mysite的\ urls.py

from django.conf.urls import include, url
from django.contrib import admin
import polls
urlpatterns = [
    url(r'^polls/', include('polls.urls')),
    url(r'^admin/', admin.site.urls),
   ]

settings.py中的INSTALLED_APPS

 INSTALLED_APPS = [
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
'polls',

 ]

文档中还有另一个问题,即文档类型:

from django.conf.urls import url

from . import views

urlpatterns = [
url(r'^$', views.index, name='index'),
   ]

当我运行它时,它说不能导入名称'views',我删除了。,然后它工作。但上面的问题仍然没有解决,谁能告诉我为什么?

10 个答案:

答案 0 :(得分:2)

听起来您没有安装polls应用。

转到settings.py,在其中找到INSTALLED_APPS = [...]并将'polls',添加到该列表中。

答案 1 :(得分:1)

我遇到了这种情况。但是,当我将代码从文档复制到文件时,问题已解决。我认为您使用的Django版本可能不正确。参考此处:https://docs.djangoproject.com/en/2.1/faq/install/

答案 2 :(得分:1)

在文件的预输入条目中,它显示:

    1. Add an import:  from my_app import views
    2. Add a URL to urlpatterns:  path('', views.home, name='home')

因此,请尝试输入:

from django.contrib import admin
from django.urls import path, include
from polls import views
urlpatterns = [
    path('polls/', include('polls.urls')),
    path('admin/', admin.site.urls),
]

,但是之后您需要将一些内容导入polls \ urls.py文件,因为如果不这样做,则会出现错误消息,指出该文件为空。

from django.contrib import admin
from django.urls import path
urlpatterns =[

]

答案 3 :(得分:1)

请检查 polls / urls.py :应该是这样的:

from django.urls import path

from . import views

urlpatterns = [
    path('', views.index, name='index'),
]

还要检查 mysite / urls.py :应该是这样的:

from django.contrib import admin
from django.urls import include, path

urlpatterns = [
    path('polls/', include('polls.urls')),
    path('admin/', admin.site.urls),
]

最后检查 polls / views.py :应该是这样的:

from django.http import HttpResponse


def index(request):
    return HttpResponse("Hello, world. You're at the polls index.")

我认为手动将任何内容添加到INSTALLED_APPS = []部分不是一个好主意。至少对于本教程而言。

答案 4 :(得分:1)

我也遇到了这个问题,但就我而言,这是因为我无意中将mysite/urls.py教程中打算进行的更改添加到了mysite/urls.conf中。

按照本教程创建mysite/urls.py并进行填充可以解决我的问题。

答案 5 :(得分:0)

我觉得这个问题与设置环境有关。

对于您的第一个问题,请尝试url(r'^polls/', include('mysite.polls.urls')),

对于第二个问题,请尝试from polls import views,或者坚持使用import views

如果这不起作用,我建议重新启动教程,因为显然环境尚未相应设置。另一方面,代码完全没问题。

答案 6 :(得分:0)

您正在使用的TCP端口是否可用?该示例告诉您尝试http://localhost:8000/polls/,但可能会发生端口8000已被使用。 使用命令(在Windows中)

netstat -an|findstr 8080

在Linux中,命令应为

netstat -an|grep 8080

检查端口8080的可用性(我随机选择了端口号)。

如果目标端口可用(为了参数,让我们说),在命令提示符下键入以下命令以启动Django的内置轻量级Web服务器:

python manage.py runserver 8080

我假设上面是在manage.py所在的位置运行。 如果到目前为止一切正常,轻量级网络服务器将会启动。

然后,在您的浏览器中,您应该尝试显示Hello, world. You're at the polls index.

http://localhost:8080/polls/

答案 7 :(得分:0)

尽管有附加的文件夹架构,但我怀疑应用程序polls的启动文件夹太高。意味着,在文件夹“ You_want_to_keep_Your_project”中,您拥有:mysite>mysite。而且,您应该先从mysite内部启动应用程序,但是您只是在文件夹“ You_want_to_keep_Your_project”中启动它。 我在本教程中是这样做的,并且存在相同的问题。

PS。您现在无需在设置中声明polls(当然,如果您这样做了,这不是问题)

答案 8 :(得分:0)

我遇到了这个问题,花了我两天的时间,根本原因是urls.py的文件名错误,例如'urls.py'。 “ urls.py”中urls.py前面有一个空格。 当我将polls /'urls.py'固定为polls / urls.py时,它起作用了。

答案 9 :(得分:0)

'mysite',部分的'polls',之前您有INSTALLED_APPS = []。此外,每个应用程序名称都应写为'xyz',,此处通常会漏掉语法,请检查一下。确认并选中后,请运行python manage.py migrate polls

确保在(VENV)中而不是(BASE)中运行此文件。在此python manage.py runserver命令之后,将启动指定IP的服务器。