web应用程序的Django Url路径重复。Can';我不知道它是怎么做到的
我在Django 2.2.5中遇到了URL模式问题。我无法为我的应用导航到正确的URL模式。当我运行服务器时,我能够导航到APP1/url.py和views.py中定义的基本url“:8000/” 当我输入:8000/登录时,我得到以下错误: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
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