【问题标题】:How to solve page not found 404 - python django?如何解决找不到页面 404 - python django?
【发布时间】:2021-02-24 02:04:30
【问题描述】:

我创建了一个应用程序,它的 index.html 是主页,当我运行“py manage.py runserver”命令时,它会打开索引页面。然后我为主页创建了另一个应用程序,并添加了 url、创建视图和据我所知的所有内容。但是当我单击“主页”时,它导航到“http://127.0.0.1:8000/static/home.html”并显示“找不到页面(404)”和“找不到'home.html'”我将我的代码粘贴在下面

webapp\settings.py:

INSTALLED_APPS = [
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',
    'tbs',
    'tbs_home'
]

webapp\urls.py: urlpatterns = [

path('', include('tbs.urls')),
    path('tbs_home', include('tbs_home.urls')), 
    path('admin/', admin.site.urls)
    
]   

tbs_home\urls.py:

urlpatterns = [
    path('home',views.home, name='home') 
]

tbs_home\views.py:

def home(request):
   return render(request, 'home.html')

模板\home.html:

{% extends 'index.html' %}
 {% load static%}

 {% block content%}

<h1 style = "font-family:Georgia;font:40px;font-style:normal;">Hi! {{name}}</h1>
<form action="add" method="POST">
    {% csrf_token %}
    Enter 1st num : <input type="text" name="num1"><br>
    Enter 2nd num : <input type="text" name="num2"><br>
    <input type="submit">
</form>
{% endblock %}

模板\index.html:

这是“index.html”页面中给出“home.html”链接的部分

<div class="col-xs-10 text-right menu-1">
<ul>
 <li class="active"><a href="{% static 'home.html' %}">Home</a></li>

我想我已经提供了必要的代码 sn-ps,提前感谢您的帮助。当我单击主页按钮时,我应该能够从索引页面导航到主页。

【问题讨论】:

    标签: python-3.x django


    【解决方案1】:

    将静态标签替换为url标签

    <li class="active"><a href="{% url 'tbs_home:home' %}">Home</a></li>
    

    ':' 前面的部分告诉 django 要查看哪个应用程序,':' 后面的部分说明要使用哪个 url。 static 标签指向你不想要的静态文件目录

    在 tbs_home\urls.py 中,添加 app_name

    app_name = 'tbh_home'
    
    urlpatterns = [
        path('home',views.home, name='home') 
    ]
    

    在 webapp\urls.py 中,在 url 中添加一个尾部反斜杠,例如:

    urlpatterns = [
        path('tbs_home/', include('tbs_home.urls')), 
        path('admin/', admin.site.urls)
    ]   
    

    【讨论】:

    • 我现在收到此错误“NoReverseMatch at / 'tbs_home' 不是注册的命名空间”,谢谢@leelum1
    • 在 tbs_home urls.py 中添加 app_name = 'tbs_home'
    • tbs_home/urls.py: urlpatterns = [ path('home',views.home, name='home'), ] 这是我应该在哪里将 app_name 更改为 ' tbs_home' ?
    【解决方案2】:
    in tbs_home\urls.py:
    

    把它改成:

    urlpatterns = [
        path('home/',views.home, name='home'),# adding comma is important
    ]
    
    webapp\urls.py: urlpatterns = [path('', include('tbs.urls')),
        path('tbs_home/', include('tbs_home.urls')), 
        path('admin/', admin.site.urls), # adding comma is important
        
    ]   
    

    将已安装的应用更改为:

    INSTALLED_APPS = [
        'django.contrib.admin',
        'django.contrib.auth',
        'django.contrib.contenttypes',
        'django.contrib.sessions',
        'django.contrib.messages',
        'django.contrib.staticfiles',
    ]
    

    【讨论】:

    • 如果有帮助,请点赞,如果有问题请评论
    • 谢谢@Divyeesh,我仍然收到错误消息“NoReverseMatch at / 'tbs_home' 不是注册的命名空间”
    • 是的,我试过了,但收到错误消息“NoReverseMatch at / 'tbs_home' 不是注册的命名空间”
    • 这是问题的最终可能原因
    猜你喜欢
    • 2016-03-31
    • 2016-08-01
    • 2016-08-01
    • 2015-10-22
    • 2014-03-20
    • 2020-10-27
    • 2019-07-21
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多