day17-Django为用户响应内容
一、前言
我们今天来学习一下,django是如何为用户响应内容的,看它在后台写的程序是如何被前台识别的。一起来研究一下一个登陆函数的响应内容!!!
二、前置条件
在项目的url是中设置好它的路由:
from django.contrib import admin from django.urls import path from cmdb import views urlpatterns = [ path('admin/', admin.site.urls), path("login/",views.login), #设置好login的路由 ]
如图:
三、普通方式响应
3.1、html字符串定义在函数中
说明:在具体app中(这里就说是cmdb吧)的views里面定义login函数,然后直接把html的文本当做一个字符串赋值给变量
from django.shortcuts import HttpResponse def 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文件写在单独的一个文本中,然后通过文件打开的方式获取。
from django.shortcuts import HttpResponse def 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的代码:
<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,实现上面的功能,只要一行代码,就能完美的实现上面的功能,函数的原理都是一样子的。
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名,否则找不到。