[Django]页面跳转踩坑的路径问题

搞了一个下午,踩各种坑,下面记录一下踩坑过程

创建pythonapp的模板后,在项目文件夹的urls.py中写(index.html为主页面,hello.html是要跳转的页面)

from django.urls import path, include
from pyapp import views

urlpatterns = [
    # path('admin/', admin.site.urls),
    path('', views.index_view, name='index_view'),  # index

    path('pyapp/', include('pyapp.urls')),  # hello

]

pyapp文件夹中写

from django.urls import path
from . import views

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

views中写

from django.shortcuts import render

def index_view(request):
    return render(request, 'index.html')

def hello_view(request):
    return render(request, 'hello.html')

然后创建2个html文件:index.html,hello.html

index.html:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>index</title>
</head>
<body>
<h1>hello index</h1>
<a href="hello_view">hello1</a>
</body>
</html>

hello.html:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>hello</title>
</head>
<body>
    <h1>helloworld</h1>
</body>
</html>

我将这2个html文件放在pyapp的目录下,然后运行,

结果出现这样的错误

原来是因为在settings.py中

它的路径文件夹实在templates这个模板文件夹中,所以需要我们将2个html文件放在templates下(这里放上Django的模板了解链接Django 模板 | 菜鸟教程 (runoob.com)

 但是当我将这2个html文件放在templates文件夹下运行,发生了这样的报错

嗯?上面的提示是说在我主从路由器中设置的路径中没有找到hello.html这个东西

但是如果我单独打开index.html这个文件的话点击链接进行跳转是不会出现404无法访问的情况呀

找了一圈,找了一个下午的时间,终于发现了问题

确实如果是打开html文件的话是没问题的,但是在django中就不一样了

django是用views.py去处理的,也就是说当index.html要跳转到hello.html的话,那么首先需要到views.py中

但是index.html找不到views.py,那么就需要一条绳子去连接这2个东西,也就是urls.py,

用路径让数据找到传输的方向

这里又要提到二个函数:path和include

path这个函数总共有四个参数,前二个是必须要填的,第一个是路径,第二个是导入的views中的方法(详细请访问:Django 路由 | 菜鸟教程 (runoob.com))这里不多赘述

include的用法:

然后再将urls的参数传入views中定义的方法里,实现跳转

所以在index.html中指定的文件路径应该是

这样访问路径的话就OK了,最后跳转正常

 

原文地址:http://www.cnblogs.com/C418-minecraft/p/16852354.html

发表评论

您的电子邮箱地址不会被公开。