无法导入名称'views',.Python, Django

新手上路,请多包涵

我在这个论坛上看了很多答案,但它们并没有解决我的问题。我将非常感谢您的帮助。

我的文件 views.py 返回此错误:

 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 (Environemnt\the_weather\weather)

 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 (Environemnt\the_weather\weather)

 from django.urls import path
from . import views

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

urls.py (Environemnt\the_weather\the_weather)

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

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

模板(the_weather\weather\templates\weather) 只有文件 index.html

目录

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

我尝试使用来解决我的问题 from __future__ import absolute_importhomepage import views 。我还尝试将 views.py 复制到目录模板(并修改其代码)但不幸的是它不起作用

原文由 Maddie Graham 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 1.8k
2 个回答

You need to separate your views and urls create a new module (file) urls.py in your app, in your case it is weather 文件夹,并在其中添加这些代码,并将其从 views.py 中删除,您可以 在此处 阅读以更好地理解它。

路径the_weather/weather/urls.py

 from django.urls import path
from . import views

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

路径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

原文由 Druta Ruslan 发布,翻译遵循 CC BY-SA 4.0 许可协议

您需要将 views.py 文件放在天气文件夹中。确保它在正确的天气文件夹中,我猜你有两个天气文件夹。还要确保这些代码是正确的;

#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

原文由 Darker-Than-Snow 发布,翻译遵循 CC BY-SA 4.0 许可协议

推荐问题