Reputation:
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
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
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
Reputation: 1269
Try changing your urlpatterns as follows:
path('', home_view, name='home'),
Upvotes: 0