【发布时间】:2019-10-27 20:47:26
【问题描述】:
我有一个 Django 项目,它有两个不同的 Django 应用程序,MyApp1 和 MyApp2(更改了它们的名称)。
结构是这样的:
MyProject
MyApp1
static
templates
urls.py
views.py
...
MyProject
settings.py
urls.py
...
我将 MyApp2 作为一个单独的应用程序编写在不同的 Django 项目中,并将其与 MyProject 项目集成(pip install MyApp2)。这是settings.py文件中安装的应用程序:
# Application definition
INSTALLED_APPS = [
'MyApp1',
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
'MyApp2',
]
这些是 MyProject 的以下路径 (urls.py)。
from django.contrib import admin
from django.urls import path, include
urlpatterns = [
path('admin/', admin.site.urls),
path('myapp1/', include('myapp1.urls')),
path('', include('myapp1.urls')),
path('myapp2/',include('myapp2.urls')),
]
这些是 MyApp1 的以下路径 (urls.py):
from django.urls import path
from . import views
from django.urls import path
from . import views
urlpatterns = [
path('', views.home, name='home'),
path('about/', views.about, name='about'),
path('contact/', views.contact, name='contact'),
]
这些是 MyApp2 的以下路径 (urls.py):
from django.urls import path
from . import views
urlpatterns = [
path('', views.login, name='login'),
path('index', views.home, name='home'),
path('dashboard_output', views.dashboard_output, name='dashboard_output'),
path('login', views.login, name='login'),
]
在浏览器上,如果我输入 http://127.0.0.1:8000/ 或 http://127.0.0.1:8000/myapp1 我会看到 MyApp1。
在浏览器上,如果我输入 http://127.0.0.1:8000/myapp2,我会看到 MyApp2(登录页面)。
到目前为止一切顺利,但如果我输入http://127.0.0.1:8000/myapp2/index,系统会将我定向到 myapp1 的视图而不是 myapp2 的视图。我究竟做错了什么?有什么想法吗?
【问题讨论】:
-
这些网址不应该发生这种情况。当您转到 myapp2/index 时,您究竟会得到哪个视图?
-
当我转到 myapp2/index url 时,我正在调用呈现 MyApp2 应用程序的 index.html 页面的主视图。
-
是的,但你说你有别的东西。究竟是什么?
-
我得到的是 MyApp1 而不是 MyApp2 的主页。 MyApp1 和 MyApp2 是完全不同的应用程序。
-
我希望你能具体一点。我知道它们是单独的应用程序。但是你是说当你去“/myapp2/index”时,不是得到myapp2.views.home的结果,而是得到myapp1.views.home的结果?
标签: python django django-urls