Python 获取不同的视图以显示不同的内容

Python 获取不同的视图以显示不同的内容,python,django,Python,Django,我在这里遵循这本指南,并从这里开始阅读/抄写 但我无法获得不同的视图来显示不同的内容。我不知怎么找不到解释 这是我的项目url.py from django.conf.urls import patterns, include, url # Uncomment the next two lines to enable the admin: # from django.contrib import admin # admin.autodiscover() urlpatterns = patte

我在这里遵循这本指南,并从这里开始阅读/抄写

但我无法获得不同的视图来显示不同的内容。我不知怎么找不到解释

这是我的项目url.py

from django.conf.urls import patterns, include, url

# Uncomment the next two lines to enable the admin:
# from django.contrib import admin
# admin.autodiscover()

urlpatterns = patterns('',
    # Examples:
    # url(r'^$', 'Sayth.views.home', name='home'),
    # url(r'^Sayth/', include('Sayth.foo.urls')),

    # Uncomment the admin/doc line below to enable admin documentation:
    # url(r'^admin/doc/', include('django.contrib.admindocs.urls')),

    # Uncomment the next line to enable the admin:
    # url(r'^admin/', include(admin.site.urls)),
    url(r'^rango/', include('rango.urls')),
    url(r'^rango/about/', include('rango.urls')),
)
这是我的应用程序url.py

from django.conf.urls import patterns, url
from rango import views

urlpatterns = patterns('',
            url(r'^$', views.index, name='index'),
            url(r'^$', views.about, name='about'),
            )
这是我的看法

# Create your views here.
from django.http import HttpResponse

def index(request):
    return HttpResponse("Rango says Hello World! <a href='/rango/about'>About</a>" )

def about(request):
    return HttpResponse("This is the about page. <a href='/rango/'>Index</a>")
#在此处创建视图。
从django.http导入HttpResponse
def索引(请求):
返回HttpResponse(“Rango向世界问好!”)
def关于(请求):
返回HttpResponse(“这是关于页面”)

我的两个页面都解析了,但都显示了索引页面,为什么?

定义的URL不正确。根URL.py应该只有一个指向应用程序的指针,而应用程序的URL.py应该解析不同的端点

请尝试以下URL.py:

#Project urls.py
from django.conf.urls import patterns, include, url
urlpatterns = patterns('',
    # Examples:
    # url(r'^$', 'Sayth.views.home', name='home'),
    # url(r'^Sayth/', include('Sayth.foo.urls')),

    # Uncomment the admin/doc line below to enable admin documentation:
    # url(r'^admin/doc/', include('django.contrib.admindocs.urls')),

    # Uncomment the next line to enable the admin:
    # url(r'^admin/', include(admin.site.urls)),
    url(r'^rango/', include('rango.urls')),
)


#rango/urls.py
from django.conf.urls import patterns, url
from rango import views

urlpatterns = patterns('',
            url(r'^$', views.index, name='index'),
            url(r'^about/$', views.about, name='about'),
            )

如果您不希望在应用程序上创建url.py,您只需执行如下url映射:

urlpatterns = patterns('',
    # ...
    # most detailed urls comes first.
    url(r'^rango/about/?$', 'rango.views.about', name='about'),
    url(r'^rango/?$', 'rango.views.index', name='index'),

)

正如第一个答案所提到的,项目的url.py只需要一个指向应用程序url.py的指针

从概念上讲,任何与“^rango/”匹配的内容都应该传递到应用程序url.py,然后应用程序处理url的其余部分。。“/”或“关于/”

因此,在应用程序url.py中,您需要确保每个模式都存在映射

在tangowithdjango的书中,“关于”页面是一个练习,留给读者,但是如果将来有问题,您可以随时检查应用程序的代码,例如:

项目URL.py:

应用程序URL.py:


然后我使用Sayth.URL中定义的URLconf得到错误,Django尝试了以下URL模式,顺序为:^rango/^$[name='index']^rango/^about$[name='about']当前URL rango/about/与这些模式中的任何一个都不匹配。编辑答案以包含尾部斜杠。请现在试一试。