Cannot import name 'views',.Python, Django

Question:

I have read many answers in this forum, but they does not solve my problem. I will be very grateful for help.

My file views.py returns this error:

from . import views
ImportError: cannot import name 'views' from '__main__' (C:/Users/tymot/Desktop/weather app/env/Environemnt/the_weather/weather/views.py)

views.py (Environemntthe_weatherweather)

from django.shortcuts import render
from django.contrib import admin

def index(request):
    return render(request, 'weather/index.html') #returns the index.html 

urls.py (Environemntthe_weatherweather)

from django.urls import path
from . import views

urlpatterns = [
    path('', views.index),  #the path for our index view
]

urls.py (Environemntthe_weatherthe_weather)

from django.contrib import admin
from django.urls import path, include

urlpatterns = [
    path('admin/', admin.site.urls),
    path('', include('weather.urls')),

templates(the_weatherweathertemplatesweather)
only file index.html

Directory

-the_weather
--the_weather
---__init__
---setting
---urls
---wsgi
--weather
---migrations
----__init__
---templates
----weather
-----index
---__init__
---admin
---apps
---models
---tests
---urls
---views
--db
--manage.py

I try use to resolved my problem from __future__ import absolute_import, or homepage import views. I else try copy views.py to directory templates (and modify its code) but unfortunately it not work

Asked By: Maddie Graham

||

Answers:

You need to separate your views and urls create a new module (file) urls.py in your app, in your case it is weather folder, and add these code there, and remove it from views.py, you can read here about it to understand it better.

Path : the_weather/weather/urls.py

from django.urls import path
from . import views

urlpatterns = [
    path('', views.index),  #the path for our index view
]

Path : the_weather/weather/views.py

from django.shortcuts import render
from django.contrib import admin

def index(request):
    return render(request, 'weather/index.html') #returns the index.html template
Answered By: Druta Ruslan

Why don’t you try like this

from .views import index

There may be separate folder of urls and views.py
what you have to do is you have to write
from appname import views
suppose your app name is myapp
you have have to write
from myapp import views

Answered By: user13275524

use should create new url.py in weather and write code in views.py

url.py

from django.urls import path
from . import views
urlpatterns = [
   path('', views.index, name='index')
]

write code in urls.py of your project

from django.urls import path, include
from . import views
urlpatterns = [
   path('wheather/',include('wheather'))
]

I had Similar problem, it didn’t solved, till I added an empty views.py in root in example, in your case add to Environemntthe_weatherthe_weather

Answered By: Farshid Ahmadi

You would need to put your views.py file in your weather folder. Make sure it is in the right weather folder, I am guessing you have two weather folders. Also make sure these codes are right;

#Path : the_weather/weather/urls.py

from django.urls import path
from . import views

urlpatterns = [
    path('', views.index),  #the path for our index view
]

#Path : the_weather/weather/views.py

from django.shortcuts import render
from django.contrib import admin

def index(request):
    return render(request, 'weather/index.html') #returns the index.html template
Answered By: Darker-Than-Snow

I had the same problem.

click for image

click for image

In formsdemoformsdemo__init__.py, I changed the import code to from forms app import views.

Answered By: Manoj
from django.contrib import admin
from django.urls import path
import main.views
urlpatterns = [
    path('admin/', admin.site.urls),
    path('', main.views.home_page, name="home_page"),
]
 
Answered By: Abhinav Singwal

Well, i was also facing the same issue. I was continuously getting server errors but then I figured out it was a simple error.

go to the urls.py file

from django.urls import path
from . import views

urlpatterns = [
    path('', views.index, name = index),  #the path for our index view
]

I just had to remove name = index and the server worked with 0 errors.

enter image description here

Answered By: Soum Datta
Categories: questions Tags: ,
Answers are sorted by their score. The answer accepted by the question owner as the best is marked with
at the top-right corner.