单个URLS文件显示普通文本页面

       在我们搭建成功django 并且startproject一个django的时候,我们会发现他声成很多文件,其中urls文件是我们其中一个很重要的文件,他就是定义我们的url路径的函数。

django中视图函数views和路由函数urls简单学习_python

      可以打开开开这个文件,这个文件就是要用到的url路径函数,里面就是一些导入的模块,和相关函数,我们可以参照例子来写一个我们自己的

默认文件内容:

django中视图函数views和路由函数urls简单学习_django_02urls.py里面的内容大概基本格式如下

urlpatterns = [
path('url路径/', views视图函数,参数),
]

接下来我们需要自己定义一个url路径,方法很简单,我们只需要参照admin那条的写法即可

urlpatterns = [
path('admin/', admin.site.urls),
path('OnePath/',views.OnePath)
]

django中视图函数views和路由函数urls简单学习_python_03

接下来在views函数中需要定义这个OnePath函数,定义如下所示

django中视图函数views和路由函数urls简单学习_python_04

def   OnePath(request):
return HttpResponse("OnePath for you")

小技巧

当我们只知道方法,不知道模块的时候,使用pycharm快捷键,鼠标放在方法上,键盘

win:   ctrl   + enter

mac: option  +   enter

django中视图函数views和路由函数urls简单学习_django_05

接下来运行  python3  manager.py runserver 就可以使用浏览器(如如果想定义多个url可以按照上面依次定义)

http://127.0.0.1:8000/OnePath访问

django中视图函数views和路由函数urls简单学习_python_06


单个URLS文件显示html页面

    上面演示的是我们使用文本页面显示的http页面,接下来演示怎么使用html来渲染页面

在manager.py这一层创建一个templates目录,templates目录里面定义我们的html,假如我们就叫home.html

django中视图函数views和路由函数urls简单学习_django_07

home.html内容编写如下所示,以时钟为例

<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
<title>系统时间</title>
</head>
<body>
<div id="datetime">
<script>
setInterval("document.getElementById('datetime').innerHTML=new Date().toLocaleString();", 1000);
</script>
</div>
</body>

接下来我们创建的templates文件夹要指明在django工程中的路径,需要自改settings.py文件的相关配置,要把TEMPLATES项里面的DIRS由原来的空改为下面所示

'DIRS': [os.path.join(BASE_DIR,'templates')],

EMPLATES = [
{
'BACKEND': 'django.template.backends.django.DjangoTemplates',
'DIRS': [os.path.join(BASE_DIR,'templates')],
'APP_DIRS': True,
'OPTIONS': {
'context_processors': [
'django.template.context_processors.debug',
'django.template.context_processors.request',
'django.contrib.auth.context_processors.auth',
'django.contrib.messages.context_processors.messages',
],
},
},
]

然后开始定义我们的url路径和视图函数

url定义

django中视图函数views和路由函数urls简单学习_python_08

views定义

def home(request):
return render(request,'home.html') //使用render函数来渲染html页面

接下来启动服务之后,就可以看到页面

django中视图函数views和路由函数urls简单学习_python_09

html文件中使用变量

假如我们在html页面中一个量需要经常变动,因为我们可以把它定义为变量,这样方便我们随时使用,那我们怎么定义这个变量和和使用这个变量呢

我们先在templates文件中定义一个带有变量的index.html的文件

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

<h1>当前时间:{{ current_time }}</h1> //双引号中的current_time就是变量

</body>
</html>

接下来在urls.py和views.py文件中定义和引用

urls.py文件

django中视图函数views和路由函数urls简单学习_django_10

views.py文件

def CurrentTime(request):
times = datetime.datetime.now()
return render(request,'index.html',{"current_time":times}) render函数接受多个参数,第三个参数是个字典,可以设置变量的值

接下来运行会发现,html页面显示的是真实的时间,而不是显示current_time字符串

django中视图函数views和路由函数urls简单学习_django_11

多个APP里面url使用

      我们写项目的时候是不会让一个文件干所有的事,我们必须把它切割开,分割成各个模块,函数的url也是如此,我们可以针对不同的App,根据App的功能定义不同的URL函数,创建一个叫做Music的App

python3    manager.py     startapp     Music

      创建出来App叫Music的,目录下的文件,默认如下所示

Music
├── __init__.py
├── __pycache__
│   ├── __init__.cpython-39.pyc
│   ├── urls.cpython-39.pyc
│   └── views.cpython-39.pyc
├── admin.py
├── apps.py
├── migrations
│   └── __init__.py
├── models.py
├── tests.py
└── views.py

我们需要在Music里面创建一个urls.py的文件,用来定义Music的url函数,创建完成之后,如下

Music
├── __init__.py
├── __pycache__
│   ├── __init__.cpython-39.pyc
│   ├── urls.cpython-39.pyc
│   └── views.cpython-39.pyc
├── admin.py
├── apps.py
├── migrations
│   └── __init__.py
├── models.py
├── tests.py
├── urls.py //自行创建出来的urls.py文件
└── views.py

接下来要开始定义写这个路由函数,写的方法还是和上面的一样,但是要主要导入的模块

django中视图函数views和路由函数urls简单学习_python_12

然后继续开始在Music里面views.py中创建我们这个listen函数

django中视图函数views和路由函数urls简单学习_django_13

我们现在创建完成了子路由,但是我们默认的url是在项目HelloDjango中的urls.py,那我们就需要在项目的urls,py中include包含记录这个子路由

django中视图函数views和路由函数urls简单学习_python_14

接下来就可以使用 http://127.0.0.1:8000/music/listen  来访问这个页面了

django中视图函数views和路由函数urls简单学习_python_15

注意我们需要在模块配置中导入相关模块(不导入,也不会报错,亲测):

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

至于html页面就不再演示,方法和上面的一致