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名,否则找不到。

 

posted @ 2018-02-26 13:00  帅丶高高  阅读(190)  评论(0编辑  收藏  举报