python - 无法在 Django 中导入 View (2.1.4、Python 3.7.0、Win 7)

标签 python django

我正在使用 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/

相关文章:

python - python中关于gabor过滤器的代码

Python multiprocessing.Process 行为不确定

python - Django 在 View 中获取验证错误消息

django:如何在表单向导中使用 inlineformset?

python - 从 Python 2.7 到 2.6 的语法转换

iphone 的 Python 服务器端推送通知

python - 将 csv 转换为 json 多文档?

python - 如何在 Jupyter 笔记本中设置 pandas.DataFrame.loc 的输出精度?

python - 如何在向网站发送post请求时返回结果,然后选择其中之一?

python - Django编程报错1146表不存在