如何让 django 识别两个 url?

How to make django to recognize two urls?

我对 Django 和网络编程完全陌生,我什至不知道如何足够准确地问这个问题。如果我要求的是显而易见的事情,请原谅。

我正在尝试将两个不同的 url 放入同一文件夹应用程序中的一个 urls.py 文件中。我注意到 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'))
]

这是我的 views.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, everything works fine I can see the "HELP PAGE" but when I reqest 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'),
]

在您的项目 urls 文件中:

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 中没有其他内容,第一条规则将匹配(毕竟,它不知道你是如何到达这里的点),你会得到帮助视图。有了这个文件,根本就没有办法知道你打算去 "index"。到达此处后,将此文件视为一个实体。它不知道前面是什么。它只是试图匹配此时给出的内容。