#python #django
#python #django
Вопрос:
Я следил за официальным документом Django, и я пишу приложение для опроса.
И в пакете mysite при запуске он говорит, что нет модуля с именем «опросы», как я могу это решить?
мой 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
mysiteurls.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),
]
INSTALLED_APPS в settings.py
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'),
]
Когда я запускаю его, он говорит, что не удается импортировать имя «просмотры», я удаляю из., тогда это работает.Но проблема, описанная выше, все еще не решена, кто-нибудь может сказать мне, почему??
Комментарии:
1. Не связывайте изображения. Либо включите их, либо, что еще лучше, скопируйте-вставьте код в виде текста и используйте блок кода для форматирования кода. Пожалуйста, не заставляйте нас переходить по ссылкам на сторонние ресурсы.
2. Пожалуйста, поместите код ваших файлов project .py.
Ответ №1:
Я столкнулся с этой проблемой, это стоило мне двух дней, основная причина — имя файла urls.py это неправильно , как ‘ urls.py «. Перед urls.py в ‘ urls.py «. Это сработало, когда я исправил опросы / ‘ urls.py » чтобы polls/urls.py .
Комментарии:
1. Если вы проверите сообщение, такого пробела перед
urls.py
… итак?
Ответ №2:
Пожалуйста, проверьте 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 = [ ] . По крайней мере, для этого урока.
Ответ №3:
Похоже, у вас не установлено polls
приложение.
Перейдите settings.py
, найдите внутри него INSTALLED_APPS = [...]
и добавьте 'polls',
в этот список.
Комментарии:
1. но я добавил «опросы» в INSTALLED_APPS
2.Ну, Django этого не видит, значит, что-то не так. Запустите эти три строки из каталога вашего проекта:
python manage.py shell
from django.conf import settings
settings.INSTALLED_APPS
и вставьте результат сюда. Также вы можете удалить строкуimport polls
urls.py
, Django автоматически обработает это с помощью строки.3. @Mr.tang Покажите раздел INSTALLED_APPS вашего settings.py .
4. @почти новичок Хорошо, я опубликовал его
5. @Mr.tang Я не
Ответ №4:
Несмотря на прикрепленную схему папок, у меня есть подозрение, что приложение polls
было запущено на одну папку слишком высоко. Означает, что в папке « You_want_to_keep_Your_project
» у вас есть: mysite>mysite
. И вы должны сначала запустить приложение изнутри mysite
, но вы запустили его только в папке « You_want_to_keep_Your_project
«. Я сделал это в этом руководстве и столкнулся с той же проблемой.
PS. В данный момент вам не нужно объявлять polls
в настройках (хотя, конечно, это не проблема, если вы это сделали)
Комментарии:
1. Я столкнулся с аналогичной проблемой, я думал, что мне нужно создать файл
urls.py
в родительскойmysite
папке (папке проекта), но на самом деле он находится внутри папкиmysite
, которая находится внутри папки проекта с тем же именем.
Ответ №5:
Я столкнулся с такой ситуацией. Но когда я копирую код из документации в файл, проблема решена. Я подумал, что версия django, которую вы использовали, может быть неправильной. Ссылка здесь: https://docs.djangoproject.com/en/2.1/faq/install /
Ответ №6:
В предварительно введенной записи файла говорится:
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),
]
но после этого вам нужно импортировать несколько вещей в pollsurls.py файл, потому что, если вы этого не сделаете, он выдаст сообщение об ошибке, сообщающее, что файл пуст.
from django.contrib import admin
from django.urls import path
urlpatterns =[
]
Ответ №7:
Я тоже столкнулся с этой проблемой, но в моем случае это было потому, что я непреднамеренно добавил изменения, предусмотренные в руководстве для mysite/urls.py
into mysite/urls.conf
.
Создание mysite/urls.py
и заполнение в соответствии с руководством решили проблему для меня.
Ответ №8:
У меня такое чувство, что эта проблема связана со средой установки.
Для вашей первой проблемы попробуйте url(r'^polls/', include('mysite.polls.urls')),
Для вашей второй проблемы попробуйте from polls import views
или просто придерживайтесь import views
.
Если это не сработает, я предлагаю перезапустить учебник, потому что очевидно, что среда не была настроена соответствующим образом. С другой стороны, код в порядке.
Ответ №9:
Доступен ли TCP-порт, который вы используете? В примере предлагается попробовать, http://localhost:8000/polls/
но может случиться так, что порт 8000 уже используется. Используйте команду (в Windows)
netstat -an|findstr 8080
в Linux команда должна быть
netstat -an|grep 8080
чтобы проверить доступность порта 8080 (я выбрал номер порта случайным образом).
Если целевой порт доступен (скажем, для аргументации), введите следующую команду в командной строке, чтобы запустить встроенный облегченный веб-сервер Django:
python manage.py runserver 8080
Я предполагаю, что вышеуказанное выполняется в том месте, где manage.py находится в расположении.
Если пока все в порядке, включится легкий веб-сервер.
Затем в вашем браузере вы должны попробовать http://localhost:8080/polls / который должен показать Hello, world. You're at the polls index.
Ответ №10:
Есть ли у вас 'mysite',
раньше 'polls',
в INSTALLED_APPS = []
разделе. Кроме того, каждое имя приложения должно быть написано так, как 'xyz',
здесь обычно отсутствует синтаксис, пожалуйста, проверьте это. После подтверждения и проверки этого, пожалуйста, запустите python manage.py migrate polls
.
Убедитесь, что вы запускаете это в (VENV), а не в (BASE). После этой python manage.py runserver
команды запустится сервер с указанием IP.
Ответ №11:
Без сомнения, вы уже столкнулись с этой проблемой, но у меня была такая же проблема, и для меня это было основной причиной. Я понятия не имею, почему, но в моем settings.py В итоге я остановился на этой фразе;
from mysite.polls.apps import PollsConfig
в моем settings.py , не уверен, откуда это взялось, так как я искал в учебнике, и там не сказано, чтобы добавить его. Я нашел его, выполнив поиск по всему моему каталогу для;
mysite.polls