【问题标题】:Page not found (404) django找不到页面(404)django
【发布时间】:2014-03-20 18:16:39
【问题描述】:

谁能帮我解决这个问题。当我尝试访问时,出现以下错误。

请求方法:GET 请求网址:
使用 myproject.urls 中定义的 URLconf,Django 按以下顺序尝试了这些 URL 模式: ^管理员/ ^myproject/$ [name='home'] 当前 URL 与其中任何一个都不匹配。 您看到此错误是因为您的 Django 设置文件中有 DEBUG = True 。将其更改为 False,Django 将显示标准 404 页面。

urls.py

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

from django.contrib import admin
admin.autodiscover()

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

url(r'^admin/', include(admin.site.urls)),
url(r'^booking/$', 'booking.views.home', name ='home'),
)

views.py

from django.shortcuts import render
#..

# Create your views here.
def index(request):
    return render("Hello, guesthouse!!")

settings.py

INSTALLED_APPS = (
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',
    'booking',
)
ROOT_URLCONF = 'myproject.urls'

WSGI_APPLICATION = 'myproject.wsgi.application'

admin.py

from django.contrib import admin
from booking.models import Bookings


# Register your models here.
admin.site.register(Bookings)

谢谢你, 辐射

【问题讨论】:

    标签: python django


    【解决方案1】:

    您收到 404 是因为 views.py 中不存在“home”,或者您错误地命名了视图。

    下面我已将视图名称更改为与您的 urls.py 中指定的视图匹配的“主页”

    views.py

    from django.shortcuts import render
    
    def home(request):
        """
          home view
        """
        return render("Hello, guesthouse!!")
    

    【讨论】:

      【解决方案2】:

      booking.views 中似乎没有 home 函数。

      扩展答案:每个 URL 规范都有几个部分告诉 Django 如何路由请求。在您的帖子中,您有:

      url(r'^booking/$', 'booking.views.home', name ='home'),

      为了使映射起作用,您需要具有以下功能:

      booking.views.home

      这里有三个选项,第一个是实现另一个视图功能,第二个是你可以将booking.views.index重命名为booking.views.home,第三个是你可以将url spec更改为以下:

      url(r'^booking/$', 'booking.views.index', name ='home'),

      所有这三个选项都假设您的目录结构如下:

      |-<project_root_dir>
      |   |
      |   |- <project>
      |   |- booking
      |   |     |- <other files>
      |   |     |- views.py
      

      【讨论】:

      • 您好约翰,谢谢您的建议。您指的是哪种家庭功能?
      • 看看修改后的答案
      • 嗨,约翰,非常感谢您的建议。我听从了你的指示。仍然遇到同样的错误:(尚不确定如何解决它。有什么建议吗?谢谢你的时间。问候,Rads
      • 您为浏览器提供的 URL 是什么?
      • 当我使用# for #url(r'^booking/$', 'booking.views.index', name ='home') 时,我可以访问管理页面,我可以看到预订并可以从那里添加详细信息,但是当我尝试在没有 # 的情况下访问时,我仍然无法访问它。感谢您抽出宝贵时间约翰。
      【解决方案3】:

      您的错误在 urls.py 中。你的最后一个模式不正确。我觉得应该是

      url(r'^booking/$', 'booking.views.index'),
      

      【讨论】:

      • 您好,感谢您提出的建议,它之前对“booking.views.index”不起作用,所以我发布了带有“booking.views.home”的网址。
      • 我之前尝试过这个网址,但它不起作用。 url(r'^booking/$', 'booking.views.index')
      • 我不确定我是否理解你的命令。如果我错了,请纠正我——你有一个位于“预订”应用程序目录中的模块 views.py。该模块中有一个函数'index()'。如果是这种情况,那么您需要映射您的 url() 模式以专门调用该函数。如果这不起作用,请查看您的目录/模块布局。有其他事情不对。
      • 感谢您的回复。我的项目
      • myproject |-booking --init.py, admin.py, models.py,tests.py,views.py,urls.py |-myproject ----init.py,settings. py,urls.py,wsgi.py
      猜你喜欢
      • 2016-08-01
      • 2016-08-01
      • 2015-10-22
      • 2020-10-27
      • 2019-07-21
      • 1970-01-01
      • 2016-03-31
      • 2017-02-09
      • 2021-10-17
      相关资源
      最近更新 更多