我正在使用 django 构建网站,无法将 View 导入到我的 URL 文件中。
我的 URL 文件:
from django.contrib import admin
from django.urls import path
from django.conf.urls import include
from . import views
urlpatterns = [
path('admin/', admin.site.urls),
path('', include('blog.urls')),
]
错误:导入错误:无法从“博客”导入名称“ View ”(..\blog\blog__init__.py)
如果我尝试“从博客导入 View ”,我会收到相同的错误。
如果我尝试“从 blogapp 导入 View ”(blogapp 是博客文件夹中应用程序的名称),我会得到:
RecursionError: maximum recursion depth exceeded while calling a Python object.
本质上,它在 check_resolver (django\core\checks\urls.py) 的第 23 行和 check (django\urls\resolvers.py) 的第 397 行之间来回切换。
如果我尝试:“导入 View ”,我会得到“ModuleNotFoundError:没有名为“ View ”的模块”
我的项目结构: 主目录是“blog”,包含两个文件夹(blog和blogapp)以及db.sqlite3和manage.py文件。
子文件夹blog包含pycache文件夹,以及这些文件:init.py、settings.py、urls.py、wsgi.py。
子文件夹blogapp包含pycache文件夹迁移文件夹,以及这些文件:init.py、admin.py、apps.py、models.py、tests.py、views .py。
博客和博客应用程序都在我的 settings.py 中的 INSTALLED_APPS 中。
我检查了几个类似名称的问题(及其建议的答案),但无法弄清楚出了什么问题。
最佳答案
首先将您的项目文件夹重命名为与应用程序文件夹不同的名称,例如 blog-project。那么你应该有一个更新的树,如下所示:
博客项目
-blog(此文件夹中的settings.py、urls.py和wsgi.py)
--urls.py(参见我的示例 1)
-博客应用
--模板
---博客应用
----blogapp_home.html
----index.html
--urls.py(在此文件中,您从 .import View 执行操作)
当您导航到主页时,Django 会从您的根 urls.py 中读取。由于您的起点设置为:
path('', include('blogapp.urls')),
然后它从您创建的新应用程序 blogapp 加载 urls.py。从 blogapp 文件夹中的 urls.py 导入您的 View 。
# Example 1 blog-project/blog/urls.py
from django.contrib import admin
from django.urls import path, include
from blogapp import views
urlpatterns = [
path('admin/', admin.site.urls),
path('', views.index, name='home'),
path('blogapp/', include('blogapp.urls')),
]
# Example 2 blog-project/blogapp/urls.py
from django.urls import path, include
from . import views
urlpatterns = [
path('', views.blogapphome, name='blogapp-home'),
]
# Example 2 Views blog-project/blogapp/views.py
from django.shortcuts import render
def index(request):
sometext = 'More Text'
context = {'text': sometext}
return render(request, 'blogapp/index.html', context)
def blogapphome(request):
sometext = 'Some Text Here'
context = {'text': sometext}
return render(request, 'blogapp/blogapp_home.html', context)
# blog-project/blog/settings.py
INSTALLED_APPS = [
'blogapp.apps.BlogappConfig',
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
]
关于python - 无法在 Django 中导入 View (2.1.4、Python 3.7.0、Win 7),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56452605/