user12951955
user12951955

Reputation:

AttributeError: module 'pages.views' has no attribute 'home_view'

I was following a beginner's Django tutorial word-for-word creating a project called 'Pages' when all of a sudden my computer gave me an error (AttributeError) when I tried to access the localhost page (http://127.0.0.1:8000/) that was supposed to say 'Hello World.' Instead of seeing the statement, a 'This site can’t be reached' page was there. I am completely confused as to why this happened because I was following the instructor word-for-word yet got a different result. If anyone can help that would be very much appreciated!

Here are my files

views.py

from django.http import HttpResponse
from django.shortcuts import render

# Create your views here.
def home_view(*args, **kwargs): # args, kwargs
    return HttpResponse("<h1>Hello World</h1>") # string of HTML code

urls.py

"""trydjango URL Configuration

The `urlpatterns` list routes URLs to views. For more information please see:
    https://docs.djangoproject.com/en/2.0/topics/http/urls/
Examples:
Function views
    1. Add an import:  from my_app import views
    2. Add a URL to urlpatterns:  path('', views.home, name='home')
Class-based views
    1. Add an import:  from other_app.views import Home
    2. Add a URL to urlpatterns:  path('', Home.as_view(), name='home')
Including another URLconf
    1. Import the include() function: from django.urls import include, path
    2. Add a URL to urlpatterns:  path('blog/', include('blog.urls'))
"""
from django.contrib import admin
from django.urls import path

from pages import views

urlpatterns = [
    path('', views.home_view, name='home'),
    path('admin/', admin.site.urls),
]

Error message

AttributeError: module 'pages.views' has no attribute 'home_view'

Traceback

(trydjango) lyons-MacBook-Air:src lyons$ python manage.py runserver
Performing system checks...

Unhandled exception in thread started by <function check_errors.<locals>.wrapper at 0x10d5a6b90>
Traceback (most recent call last):
  File "/Users/lyons/Dev/trydjango/lib/python3.7/site-packages/django/utils/autoreload.py", line 225, in wrapper
    fn(*args, **kwargs)
  File "/Users/lyons/Dev/trydjango/lib/python3.7/site-packages/django/core/management/commands/runserver.py", line 120, in inner_run
    self.check(display_num_errors=True)
  File "/Users/lyons/Dev/trydjango/lib/python3.7/site-packages/django/core/management/base.py", line 364, in check
    include_deployment_checks=include_deployment_checks,
  File "/Users/lyons/Dev/trydjango/lib/python3.7/site-packages/django/core/management/base.py", line 351, in _run_checks
    return checks.run_checks(**kwargs)
  File "/Users/lyons/Dev/trydjango/lib/python3.7/site-packages/django/core/checks/registry.py", line 73, in run_checks
    new_errors = check(app_configs=app_configs)
  File "/Users/lyons/Dev/trydjango/lib/python3.7/site-packages/django/core/checks/urls.py", line 13, in check_url_config
    return check_resolver(resolver)
  File "/Users/lyons/Dev/trydjango/lib/python3.7/site-packages/django/core/checks/urls.py", line 23, in check_resolver
    return check_method()
  File "/Users/lyons/Dev/trydjango/lib/python3.7/site-packages/django/urls/resolvers.py", line 399, in check
    for pattern in self.url_patterns:
  File "/Users/lyons/Dev/trydjango/lib/python3.7/site-packages/django/utils/functional.py", line 36, in __get__
    res = instance.__dict__[self.name] = self.func(instance)
  File "/Users/lyons/Dev/trydjango/lib/python3.7/site-packages/django/urls/resolvers.py", line 540, in url_patterns
    patterns = getattr(self.urlconf_module, "urlpatterns", self.urlconf_module)
  File "/Users/lyons/Dev/trydjango/lib/python3.7/site-packages/django/utils/functional.py", line 36, in __get__
    res = instance.__dict__[self.name] = self.func(instance)
  File "/Users/lyons/Dev/trydjango/lib/python3.7/site-packages/django/urls/resolvers.py", line 533, in urlconf_module
    return import_module(self.urlconf_name)
  File "/Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/importlib/__init__.py", line 127, in import_module
    return _bootstrap._gcd_import(name[level:], package, level)
  File "<frozen importlib._bootstrap>", line 1006, in _gcd_import
  File "<frozen importlib._bootstrap>", line 983, in _find_and_load
  File "<frozen importlib._bootstrap>", line 967, in _find_and_load_unlocked
  File "<frozen importlib._bootstrap>", line 677, in _load_unlocked
  File "<frozen importlib._bootstrap_external>", line 728, in exec_module
  File "<frozen importlib._bootstrap>", line 219, in _call_with_frames_removed
  File "/Users/lyons/Dev/trydjango/src/trydjango/urls.py", line 22, in <module>
    path('', home_view, name='home'),
NameError: name 'home_view' is not defined
Performing system checks...

Unhandled exception in thread started by <function check_errors.<locals>.wrapper at 0x10d4a3b90>
Traceback (most recent call last):
  File "/Users/lyons/Dev/trydjango/lib/python3.7/site-packages/django/utils/autoreload.py", line 225, in wrapper
    fn(*args, **kwargs)
  File "/Users/lyons/Dev/trydjango/lib/python3.7/site-packages/django/core/management/commands/runserver.py", line 120, in inner_run
    self.check(display_num_errors=True)
  File "/Users/lyons/Dev/trydjango/lib/python3.7/site-packages/django/core/management/base.py", line 364, in check
    include_deployment_checks=include_deployment_checks,
  File "/Users/lyons/Dev/trydjango/lib/python3.7/site-packages/django/core/management/base.py", line 351, in _run_checks
    return checks.run_checks(**kwargs)
  File "/Users/lyons/Dev/trydjango/lib/python3.7/site-packages/django/core/checks/registry.py", line 73, in run_checks
    new_errors = check(app_configs=app_configs)
  File "/Users/lyons/Dev/trydjango/lib/python3.7/site-packages/django/core/checks/urls.py", line 13, in check_url_config
    return check_resolver(resolver)
  File "/Users/lyons/Dev/trydjango/lib/python3.7/site-packages/django/core/checks/urls.py", line 23, in check_resolver
    return check_method()
  File "/Users/lyons/Dev/trydjango/lib/python3.7/site-packages/django/urls/resolvers.py", line 399, in check
    for pattern in self.url_patterns:
  File "/Users/lyons/Dev/trydjango/lib/python3.7/site-packages/django/utils/functional.py", line 36, in __get__
    res = instance.__dict__[self.name] = self.func(instance)
  File "/Users/lyons/Dev/trydjango/lib/python3.7/site-packages/django/urls/resolvers.py", line 540, in url_patterns
    patterns = getattr(self.urlconf_module, "urlpatterns", self.urlconf_module)
  File "/Users/lyons/Dev/trydjango/lib/python3.7/site-packages/django/utils/functional.py", line 36, in __get__
    res = instance.__dict__[self.name] = self.func(instance)
  File "/Users/lyons/Dev/trydjango/lib/python3.7/site-packages/django/urls/resolvers.py", line 533, in urlconf_module
    return import_module(self.urlconf_name)
  File "/Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/importlib/__init__.py", line 127, in import_module
    return _bootstrap._gcd_import(name[level:], package, level)
  File "<frozen importlib._bootstrap>", line 1006, in _gcd_import
  File "<frozen importlib._bootstrap>", line 983, in _find_and_load
  File "<frozen importlib._bootstrap>", line 967, in _find_and_load_unlocked
  File "<frozen importlib._bootstrap>", line 677, in _load_unlocked
  File "<frozen importlib._bootstrap_external>", line 728, in exec_module
  File "<frozen importlib._bootstrap>", line 219, in _call_with_frames_removed
  File "/Users/lyons/Dev/trydjango/src/trydjango/urls.py", line 22, in <module>
    path('', views.home_view, name='home'),
AttributeError: module 'pages.views' has no attribute 'home_view'

Upvotes: 2

Views: 4048

Answers (3)

anushka jain
anushka jain

Reputation: 1

I was getting the same error. I added the views.py in the trydjango folder instead of pages folder and it worked.

from django.contrib import admin
from django.urls import path
from . import views

urlpatterns = [
    path('admin/', admin.site.urls),
    path('', views.homepage),
]

Upvotes: 0

Eric Bulgrin
Eric Bulgrin

Reputation: 33

Received the same error during this tutorial. The issue was that I was using the "views.py" file from the "products" folder from earlier in the tutorial. You must make the HttpResponse code edits inside the "views.py" file located in the new "pages" folder.

Upvotes: 2

MeL
MeL

Reputation: 1269

Try changing your urlpatterns as follows:

path('', home_view, name='home'),

Upvotes: 0

Related Questions