Can anyone help me with this issue. When I try to access I get the following error.
Request Method: GET
Request URL:
Using the URLconf defined in myproject.urls, Django tried these URL patterns, in this order:
^admin/
^myproject/$ [name='home']
The current URL, , didn't match any of these.
You're seeing this error because you have DEBUG = True in your Django settings file. Change that to False, and Django will display a standard 404 page.
urls.py
from django.conf.urls import patterns, include, url
from django.contrib import admin
admin.autodiscover()
urlpatterns = patterns('',
# Examples:
#url(r'^$', 'myproject.views.home', name='home'),
# url(r'^blog/', include('blog.urls')),
url(r'^admin/', include(admin.site.urls)),
url(r'^booking/$', 'booking.views.home', name ='home'),
)
views.py
from django.shortcuts import render
#..
# Create your views here.
def index(request):
return render("Hello, guesthouse!!")
settings.py
INSTALLED_APPS = (
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
'booking',
)
ROOT_URLCONF = 'myproject.urls'
WSGI_APPLICATION = 'myproject.wsgi.application'
admin.py
from django.contrib import admin
from booking.models import Bookings
# Register your models here.
admin.site.register(Bookings)
Thank you,
Rads
You are getting 404 because 'home' doesn't exist in views.py or by mistake, you have named the view wrong.
below i have changed the name of view to 'home' that matches the view specified in your urls.py
views.py
from django.shortcuts import render
def home(request):
"""
home view
"""
return render("Hello, guesthouse!!")
You don't appear to have a home function in booking.views.
Expanded answer: Each URL spec has a couple of parts that tell Django how to route the request. In your post you have:
url(r'^booking/$', 'booking.views.home', name ='home'),
In order for the mapping to work you need to have the function:
booking.views.home
You have three options here, the first is to implement another view function, the second is that you can rename booking.views.index to booking.views.home, and the third is that you can change the url spec to the following:
url(r'^booking/$', 'booking.views.index', name ='home'),
All three of these options assume that you have a directory structure like:
|-<project_root_dir>
| |
| |- <project>
| |- booking
| | |- <other files>
| | |- views.py
Your error is in urls.py. Your last pattern is incorrect. I think it should be
url(r'^booking/$', 'booking.views.index'),
Related
I am new to using Django and following a tutorial (https://video.cs50.io/w8q0C-C1js4?screen=gytX_rSwZRQ&start=1160).
So far this course has been great! However, now I am stuck at successfully creating a new app using Django.
Here is the result of my efforts: [Lecture3 Page not found
Here is what the result should be: Hello, World page when found tutorial
As far as I know I've done everything correctly, perhaps I am missing something?
Below is the code I am using, which results in Django returning the error in the title:
urls.py lecture3:
from django.contrib import admin
from django.urls import include, path
urlpatterns = [
path('admin/', admin.site.urls),
path('hello/', include("hello.urls"))
]
urls.py hello:
from django.urls import path
from . import views
urlpatterns = [
path("", views.index, name="index")
]
views.py:
from django.http import HttpResponse
from django.shortcuts import render
# Create your views here.
def index(request):
return HttpResponse("Hello, World!")
settings.py:
INSTALLED_APPS = [
'hello',
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
]
I am currently using: Python 3.9.4, and Django 3.2.3
Any and all help that can be provided will be greatly appreciated.
Thanks in advance, Richardson
The issue is coming from ‘attempttwo.urls’ so revise your settings file.
the path you provided is path('hello/', include("hello.urls")) you need to add "/hello" at the end of the url in the browser, when you run python3 manage.py runserver.
I'm new to django so take me easy. I'm just following some youtube tutorials and try to make a simple app to print Hello on the browser with django. And I keep getting this error in the urls.py file
ModuleNotFoundError: No module named 'app'
I get this error in urls.py file of my project which is bellow:
urls.py
from django.contrib import admin
from django.urls import path, include
urlpatterns = [
path('', include('app.urls')),
path('admin/', admin.site.urls),
]
I also made an app called app
app\urls.py
from django.urls import path
import views
urlpatterns = [
path('', views.home, name = 'home'),
]
app\views.py
from django.shortcuts import render
from django.http import HttpResponse
def home(request):
return HttpResponse('Hello!')
I read I think all threads on this topic and nothing helped so far and I can't realise where's my mistake or what I did wrong.
In your settings.py, add 'app.apps.AppConfig', in INSTALLED APP. You have to register the newly made apps to settings.py.
INSTALLED_APPS = [
'app.apps.AppConfig', // Added the name of app
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
]
*Note:- Everytime you add an app, register it in settings.py
I am currently trying to complete the Django 2.0 tutorial Poll application. I am using Django version 2.0.7 and Python 3.7.0. I have set up a virtual environment for this project. I am very new to Django so apologies if my terminology is incorrect.
Basically, I cant get part 1 to work.
I have tried numerous times to run it and I cant seem to figure out why it wont work.
Before I create the Polls app the site runs correctly and I get the rocket ship, however after I create the app, update polls/views.py, create the polls/urls.py file and update the mysite/urls.py, I get the following error:
Page not found (404)
Request method GET
Request URL: http://127.0.0.1:8000/
Using the URLconf defined in mysite.urls, Django tried these URL patterns, in this order:
polls/
admin/
The empty path didn't match any of these.
I thought my code was incorrect, so I copied and pasted the code from the website directly and tried to run it. It still wont work.
Below is the code I am trying and the directory layout. Any help would be greatly appreciated. I'm sure I am just missing something simple.
Thank you.
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/urls.py
from django.urls import path
from . import views
urlpatterns = [
path('', views.index, name='index'), ]
polls/views.py
from django.http import HttpResponse
def index(request):
return HttpResponse("Hello, world. You're at the polls index.")
Directory of C:\Users\ad\Documents\projects\mysite\msenv\mysite\mysite
print.txt
settings.py
urls.py
wsgi.py
init.py
pycache
Directory of C:\Users\ad\Documents\projects\mysite\msenv\mysite\polls
admin.py
apps.py
migrations
models.py
tests.py
urls.py
views.py
init.py
pycache
have you added your app name inside settings.py make sure you have added the name in settings.py which resides under project folder
in your case it will be here:
Directory of C:\Users\ad\Documents\projects\mysite\msenv\mysite\mysite
like this:
INSTALLED_APPS = [
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
'app_name',] # <--- polls in your case
make sure you are using your routes you have defined to access the correct page
for example in your case:
your website's routes are:
from django.contrib import admin
from django.urls import include, path
urlpatterns = [
path('polls/', include('polls.urls')),
path('admin/', admin.site.urls),
]
and your application 'polls' routes are:
from django.urls import path
from . import views
urlpatterns = [
path('', views.index, name='index'),
]
according to your views.py file
which is this:
from django.http import HttpResponse
def index(request):
return HttpResponse("Hello, world. You're at the polls index.")
you must visit http://localhost:{port number}/polls/ or http://127.0.0.1:{port number}/polls/
default port number is 8000
after running server using python manage.py runserver
to get your page as an output on browser
I have issues importing my app in url patterns, but everything seems in place. I get errors in from fairy_app import views and an error name 'News' is not defined
directory:
fairy-
fairy-
_init_.py
settings.py
urls.py
wsgi.py
fairy_app-
_init_.py
admin.py
models.py
tests.py
views.py
db.fairy
manage.py
views.py
from django.shortcuts import render
from django.views.generic import TemplateView
# Create your views here.
class News(TemplateView):
template_name = 'news.html'
urls.py
from django.conf.urls import patterns, include, url
from django.contrib import admin
from fairy_app.views import News
urlpatterns = patterns('',
# Examples:
# url(r'^$', 'fairy.views.home', name='home'),
# url(r'^blog/', include('blog.urls')),
url(r'^admin/', include(admin.site.urls)),
url(r'^news/', News.as_view()),
)
setting.py
INSTALLED_APPS = (
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
'fairy_app',
)
In your urls.py you reference the News view without importing it. You import the views file as module.
So you can either do:
views.News.as_view()
or:
from fairy_app.views import News
2nd way is shorter but gets inconvenient if you have many view classes, so I prefer the first one.
I found the same problem,but got sorted it out.
Create a new python file in app-level for urls
use include function in fairy-/urls file to include all other urls of the app and import views in the new file
for example;
#in url.py
urlpatterns = [
url(r'^admin/', admin.site.urls),
url(r'^greet/',include('greetings.url')),
]
#created a new file(url.py) in greetings app
#in greetings/url.py
from . import views
urlpatterns = [
url(r'^$',views.greet),
]
#greet is the function in my views`
I had the same problem. I worked around it by giving the full path
from fairy.fairy_app.views
alternatively
from ..fairy_app.views
Django is giving me a 404 error whenever I try to access "blog/" on my site, but I've defined the URLs I want and they should be matching that.
Main urls.py:
from django.conf.urls import patterns, include, url
from django.contrib import admin
admin.autodiscover()
from blog import views
urlpatterns = patterns('',
# Examples:
# url(r'^$', 'mySiteProject.views.home', name='home'),
# url(r'^blog/', include('blog.urls')),
url(r'^blog/', include('blog.urls')),
url(r'^admin/', include(admin.site.urls)),
)
blog.urls.py:
from django.conf.urls import patterns,url
from blog import views
urlpatterns = patterns(
url(r'^$',views.index,name='index')
)
404 page:
Page not found (404)
Request Method: GET
Request URL: http://localhost:8000/blog/
Using the URLconf defined in mySiteProject.urls, Django tried these URL patterns, in this order:
^admin/
The current URL, blog/, didn't match any of these.
Site structure:
mySiteProject
blog
admin.py
models.py
tests.py
views.py
urls.py
__init__.py
mySiteProject
wsgi.py
settings.py
urls.py
__init__.py
manage.py
db.sqlite3
Installed apps:
INSTALLED_APPS = (
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
'blog'
)
patterns requires a prefix as its first argument followed by zero or more arguments. So this:
urlpatterns = patterns(url(r'^$',views.index,name='index')) # won't work
in blog.urls.py should look like this:
urlpatterns = patterns('', url(r'^$', views.index, name='index')) # now has a prefix as first argument
In its present state, the patterns function in blog.urls.py will return an empty pattern_list, which means that url(r'^blog/', include('blog.urls')) will return no patterns.