搞了一个下午,踩各种坑,下面记录一下踩坑过程
创建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了,最后跳转正常
标签:index,views,Django,html,跳转,path,hello,页面 From: https://www.cnblogs.com/C418-minecraft/p/16852354.html