Как мне сопоставить URL-адреса с представлениями в Django, получая AttributeError: модуль 'myproject.views' не имеет атрибута - PullRequest
2 голосов
/ 09 февраля 2020

Я только начал изучать django и запустил учебную часть 3, решил посмотреть, понял ли я преобразование из urls.py в views.py.

Я получил представления и URL-адреса для работы в опросах app, но затем я хотел создать представления в папке проекта, поэтому я создал файл views.py в папке проекта (см. код ниже) с представлением / функцией, которое я назвал «home».

Затем я отредактировал urls.py в папке проекта (см. Ниже). запустить сервер, все заработало! посетив URL: http://localhost: 8000 / он ответил: Привет, мир. Вы находитесь на ГЛАВНОЙ СТРАНИЦЕ.

НО .. когда я попытался создать другой вид в том же views.py, который называется: morn, и добавив для него URL, то ошибка (см. Ниже), http://localhost: 8000 / morn возвращение: локальный хост отказался подключаться.

Я ЭТО ТОЛЬКО ОДИН ИЗ ТОГО ЖЕ ПУТЬ, так что просто когда я подумал, что понял это, я вообще не понял?!?! Разница между этими двумя представлениями заключается только в их имени и пути. Почему это не работает?

на linux Манджаро Python 3.8.1 Django 3.0.3

#
#this is my urls.py (which I made myself), in the project folder

from django.urls import include, path
from django.contrib import admin
from . import views
#from views import morn

admin.autodiscover()

urlpatterns = [
    #lager en index-side
    path('', views.home, name='home'),
    path('morn/', views.morn, name='morn'),

    path('admin/', admin.site.urls, name='admin'),
    path('polls/', include('polls.urls')),

]
#
#this is the views.py in myproject folder, same folder as 

from django.http import HttpResponse

def home(request):
    output = 'Hello, world. You\'re at the HOME PAGE.'
    return HttpResponse(output)

def morn(request):
    output = 'Hello, world. Youre at the morn-path.'
    return HttpResponse(output)

ОШИБКА от konsole при просмотре утра:

File "/home/nr1/dev/django/myproject/myproject/urls.py", line 29, in <module>
    path('morn/', views.morn, name='morn'),
AttributeError: module 'myproject.views' has no attribute 'morn'

1 Ответ

0 голосов
/ 09 февраля 2020

О нет ... Я только что понял! :) Я поместил файл views.py в обе папки myproject, а urls.py - во внутреннюю папку myproject. Затем я обновлял только внешний файл views.py, когда мне показалось, что я был во внутреннем views.py, поэтому, конечно, urls.py не смог найти новую функцию, он искал неправильный views.py (внешний ).

много разочарований ни за что .. но я научился, я научился!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...