web应用程序的Django Url路径重复。Can';我不知道它是怎么做到的

web应用程序的Django Url路径重复。Can';我不知道它是怎么做到的,django,python-3.x,django-2.2,Django,Python 3.x,Django 2.2,我在Django 2.2.5中遇到了URL模式问题。我无法为我的应用导航到正确的URL模式。当我运行服务器时,我能够导航到APP1/url.py和views.py中定义的基本url“:8000/” 当我输入:8000/登录时,我得到以下错误: Using the URLconf defined in modmagazine_base.urls, Django tried these URL patterns, in this order: admin/ [name='homepage'] si

我在Django 2.2.5中遇到了URL模式问题。我无法为我的应用导航到正确的URL模式。当我运行服务器时,我能够导航到APP1/url.py和views.py中定义的基本url“:8000/”

当我输入:8000/登录时,我得到以下错误:

Using the URLconf defined in modmagazine_base.urls, Django tried these URL patterns, in this order:

admin/
[name='homepage']
signup/
signin/
coffeetable/
crafttable/
The current path, signin, didn't match any of these.
但是,如果我在URL(:8000/signin/)中添加“/”,我将收到以下错误:

Using the URLconf defined in modmagazine_base.urls, Django tried these URL patterns, in this order:

admin/
[name='homepage']
signup/
signin/ signup/ [name='signup']
signin/ signin/ [name='signin']
signin/ coffeetable/ [name='coffeetable']
coffeetable/
crafttable/
The current path, signin/, didn't match any of these.
我能够访问我定义的视图的唯一方法是复制URL(:8000/signin/signin)。如果你看我下面的项目文件,这不是我定义URL模式的方式。我不确定我的错误在哪里。如果你能帮助我,请提前谢谢你

我的项目结构如下:

  • 计划
    • 基地
    • 附件1
    • 附件2
    • 附件3
  • manage.py
基本/设置

INSTALLED_APPS = [
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',
    'BASE',
    'APP1',
    'APP2',
    'APP3',
]
BASE/url.PY

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

urlpatterns = [
    path('admin/', admin.site.urls),
    path('', include('APP1.urls')),
    path('signup/', include('APP2.urls')),
    path('signin/', include('APP2.urls')),
    path('coffeetable/', include('APP2.urls')),
    path('crafttable/', include('APP3.urls')),

]
APP1/url.PY和APP1/VIEWS.PY

#URLS.PY
#----------
from django.contrib import admin
from django.urls import path
from . import views

app_name = "APP1"
urlpatterns = [
    path('', views.homepage, name='homepage'),
]

#VIEWS.PY
#----------
from django.shortcuts import render
from django.http import HttpResponse

def homepage(request):
    return HttpResponse("You made it home!")

APP2/url.PY和APP2/VIEWS.PY

#URLS.PY
#----------
from django.contrib import admin
from django.urls import path
from . import views

app_name = "APP2"
urlpatterns = [
    path('signup/', views.signup, name='signup'),
    path('signin/', views.signin, name='signin'),
    path('coffeetable/', views.coffeetable, name='coffeetable'),
]

#VIEWS.PY
#----------
from django.shortcuts import render
from django.http import HttpResponse

def signup(request):
    return HttpResponse("You made it to the Sign Up page!")

def signin(request):
    return HttpResponse("You made it to the Sign In page!")

def coffeetable(request):
    return HttpResponse("You made it to the Coffee Table!") 

APP3/url.PY和APP3/VIEWS.PY

#URLS.PY
#----------
from django.contrib import admin
from django.urls import path
from . import views

app_name = "APP3"
urlpatterns = [
    path('crafttable/', views.crafttable, name='crafttable'),
]

#VIEWS.PY
#----------
from django.shortcuts import render
from django.http import HttpResponse

def crafttable(request):
    return HttpResponse("You made it to the Craft Table!")


您包括来自App2.url的路径,如下所示:

path('signup/', include('APP2.urls')),
path('signup/', views.signin, name='signin'),
APP2的URL.py中的路径如下所示:

path('signup/', include('APP2.urls')),
path('signup/', views.signin, name='signin'),
这意味着您在/signup下包含/signup

将基本URL.py中的路径更改为此,它应该可以工作:

urlpatterns = [
    path('', include('APP2.urls')),
]
您也不需要在基本URL.py中定义
/signup
/signin
。include函数包含在此处包含的url.py中定义的所有模式

如果您包括上面我描述的url,那么您定义的所有url都将附加到基本url

example.com/signup
example.com/signin
example.com/coffeetable
URL包含在您包含它们的位置:

urlpatterns = [
    path('accounts', include('APP2.urls')),
]
这将为您提供如下URL:
example.com/accounts/signup