day17-django为客户端访问响应内容
一、前言
我们今天来学习一下,django是如何为用户响应内容的,看它在后台写的程序是如何被前台识别的。一起来研究一下一个登陆函数的响应内容!!!
二、前置条件
在项目的url是中设置好它的路由:
|
1
2
3
4
5
6
7
|
from django.contrib import adminfrom django.urls import pathfrom cmdb import viewsurlpatterns = [ path('admin/', admin.site.urls), path("login/",views.login), #设置好login的路由] |
如图:

三、普通方式响应
3.1、html字符串定义在函数中
说明:在具体app中(这里就说是cmdb吧)的views里面定义login函数,然后直接把html的文本当做一个字符串赋值给变量
|
1
2
3
4
5
6
7
8
9
10
|
from django.shortcuts import HttpResponsedef login(request): #第1种方法 from_str = """ <from> <input type='text'/> </from> """ return HttpResponse(from_str) |
如图:

然后通过 http://127.0.0.1:8000/login/ 查看一下效果。
3.2、html文本写在模板中
说明:之前写有点太麻烦了,我们现在用模板的方式,把html文件写在单独的一个文本中,然后通过文件打开的方式获取。
|
1
2
3
4
5
6
7
8
9
|
from django.shortcuts import HttpResponsedef login(request): #第2种方法 form_str = open("templates/login.html","r",encoding="utf-8") data = form_str.read() form_str.close() return HttpResponse(data) |
创建一个 templates文件夹,然后创建一个 login.html 然后在里面写html语言。以下就是login.html的代码:
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
|
<head> <meta charset="UTF-8"> <title>Title</title> <style> label{ width: 80px; text-align: right; display: inline-block; } </style></head><body> <form action="login/" method="post"> <p> <label for="user_name">用户名:</label> <input id="user_name" type="text"/> </p> <p> <label for="pwd">密码:</label> <input type="pwd" type="text"/> </p> <p> <input type="submit" value="提交" /> </p> </form></body> |
如图:

然后通过 http://127.0.0.1:8000/login/ 查看一下效果。
三、django的方式响应
我们上面的两种方式有点low了,django专门给我们提供了一个函数render,实现上面的功能,只要一行代码,就能完美的实现上面的功能,函数的原理都是一样子的。
|
1
2
3
4
5
6
7
|
from django.shortcuts import render# Create your views here.def login(request): return render(request,"login.html") |
你发现了没有,在上面以文件打开的方式,需要写上 templates/login.html,但是在render的函数中只写了一个login.html,那是因为在我们的项目的settings.py已经设置了,如图:

所以你的模板名除了templates之外,启用其他模板名就不行了,所以必须是templates名,否则找不到。

浙公网安备 33010602011771号