无法访问Djang中的其他应用程序

2024-06-17 12:30:01 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在写一个初学者Django应用程序。我现在可以下载我创建的第一个应用程序。但是,我不知道如何访问其他两个应用程序

swiss (project)
  |_ app_picker (default app)
  |_ eft
  |_ servermon

我当前可以通过键入127.0.0.1:8000/app\u picker/访问app\u picker。但是当我键入127.0.0.1:8000/eft172.0.0.1:8000/servermon时,找不到页面。我的Django配置有什么不懂的

已安装的应用程序

INSTALLED_APPS = [
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',
    'app_picker',
    'etf',
    'servermon',
]

项目URL

from django.contrib import admin
from django.urls import path
from django.views.generic import RedirectView
from django.urls import include

urlpatterns = [
    path('admin/', admin.site.urls),
    path('app_picker/', include('app_picker.urls')),
    path('etf/', include('etf.urls')),
    path('servermon/', include('servermon.urls')),
    path('', RedirectView.as_view(url='app_picker/', permanent=True)),
]

#Add Django site authentication urls (for login, logout, password management)
urlpatterns += [
    path('accounts/', include('django.contrib.auth.urls')),
]

应用程序选取器URL

from django.conf import settings
from django.conf.urls.static import static
from django.urls import path
from . import views

urlpatterns = [
    path('', views.index, name='index'),
]

eft网址

from django.conf import settings
from django.conf.urls.static import static
from django.urls import path
from . import views

urlpatterns = [
    path('eft/', views.base, name='eft_base'),
]

eft视图

from django.shortcuts import render

# Create your views here.
def base(request):
    return render(request, 'eft_base.html')

servermon网址

from django.conf import settings
from django.conf.urls.static import static
from django.urls import path
from . import views

urlpatterns = [
    path('servermon/', views.base, name='servermon_base'),
]

servermon视图

from django.shortcuts import render

# Create your views here.
def base(request):
    return render(request, 'servermon_base.html')

Tags: pathdjangofromimportapp应用程序baseconf
2条回答

这是因为您的路径定义与预期结果不同

eft URL应如下所示:

urlpatterns = [
    path('', views.base, name='eft_base'),
]

servermon URL

urlpatterns = [
    path('', views.base, name='servermon_base'),
]

这是因为当您访问172.0.0.1:8000/servermon/时,django将转到根URL(项目URL)以匹配路径。找到/servermon/,然后它将在url中提取此部分,然后转到include('servermon.urls')旁边。在提取匹配的部分之后,现在它只有'',所以您的servermon路径应该如上所示

etf.urls.py更改中:

path('eft/', views.base, name='eft_base'),

收件人:

path('', views.base, name='eft_base'),

然后访问:

127.0.0.1:8000/eft/    

类似地,在servermon.urls.py变化中:

path('servermon/', views.base, name='servermon_base'),

收件人:

path('', views.base, name='servermon_base'),

然后访问:

127.0.0.1:8000/servermon/

在不更改这些文件的情况下,如果要访问,则需要使用:

127.0.0.1:8000/eft/eft/

从urleft/eft/中:

path('etf/', include('etf.urls')),

匹配第一个eft/,然后继续搜索etf.urls.py中的剩余部分eft/

path('eft/', views.base, name='eft_base'),

匹配剩余部分eft/,并且views.base用于处理请求


同样地,对于另一种用途:

172.0.0.1:8000/servermon/servermon/

您可能需要阅读:URL dispatcherdjango.urls functions for use in URLconfs

相关问题 更多 >