如何让django识别两个url



我对Django和web编程完全陌生,甚至不知道如何准确地问这个问题。对不起,如果我要的是显而易见的东西。

我试图在同一个文件夹应用程序中,在一个urls.py文件中放入两个不同的url。我注意到Django不认识他们,总是打开第一个。

这是我的应用程序urls.py文件:

from django.conf.urls import url
from second_app import views
urlpatterns = [
url(r'^$', views.help, name='help'),
url(r'^$', views.index, name='index'),
]

这是我的项目urls.py文件:

from django.conf.urls import url, include
from django.contrib import admin
urlpatterns = [
url(r'^admin/', admin.site.urls),
url(r'^index/', include('second_app.urls')),
url(r'^help/', include('second_app.urls'))
]

这是我的观点.py,这两个页面都很常见:

from django.shortcuts import render
from django.http import HttpResponse

def help(request):
help_dict = {'help_insert':'HELP PAGE'}
return render(request, 'second_app/help.html', context=help_dict)

def index(request):
my_dict = {'insert_me':'INDEX'}
return render(request, 'second_app/index.html', context=my_dict)

现在,当我试图请求http://127.0.0.1:8000/help,一切正常我可以看到"帮助页面",但当我需要时http://127.0.0.1:8000/index没有任何变化。

我该怎么修?

提前感谢!

您在url中有一个错误的配置,通常会有这样的配置。

在您的应用程序URL文件中:

from django.conf.urls import url
from second_app import views
urlpatterns = [
url(r'^help/$', views.help, name='help'),
url(r'^index/$', views.index, name='index'),
]

在您的项目URL文件中:

from django.conf.urls import url, include
from django.contrib import admin
urlpatterns = [
url(r'^admin/', admin.site.urls),
url(r'', include('second_app.urls')),
]

在应用程序url.py文件中,两个规则匹配相同的内容。让我们来分析一下。首先,项目范围内的urls.py:

urlpatterns = [
url(r'^admin/', admin.site.urls),
url(r'^index/', include('second_app.urls')),
url(r'^help/', include('second_app.urls'))
]

所以,不管你是要去index/还是help/,你最终都会看到second_app.urls。到目前为止,很好,这可能有意义。。。

但随后:

urlpatterns = [
url(r'^$', views.help, name='help'),
url(r'^$', views.index, name='index'),
]

不管你是如何到达这里的(通过index/或help/(,如果你在URL中没有其他内容,第一条规则都会匹配(毕竟,它不知道你是如何达到这一点的(,你会得到帮助视图。给定这个文件,根本没有办法知道您打算转到"索引"。一旦你到了这里,就把这个文件想象成一个单独的实体。它不知道之前发生了什么。它只是试图匹配此时给出的内容。

最新更新