• Django基础之初识视图


    编写视图

    一个视图函数,或者简短来说叫做视图,是一个简单的Python函数,它接受web请求,并且返回web响应。
    响应可以是一个网页的HTML内容,一个重定向,一个404错误,一个XML文档,或者一张图片,任何东西都可以。
    无论视图本身包含什么逻辑,都要返回响应。
    代码写在哪里也无所谓,只要它在你的Python目录下面。
    为了能够把代码放在某个地方,惯例是把视图放在叫做views.py的文件中,然后把它放到你的项目或者应用目录里。

    1. 一个简单的视图

    下面是一个返回当前日期和时间作为HTML文档的视图:
    from django.http import HttpResponse
    import datetime
    
    def current_datetime(request):
        now = datetime.datetime.now()
        html = "<html><body>It is now %s.</body></html>" %now
        return HttpResponse(html)
    

    让我们来逐行阅读上面的代码:

    • 首先,我们从django.http模块导入了HttpResponse类,以及Python的datetiem库。
    • 接着,我们定义了current_datetime函数。它是一个视图函数。每个视图函数都应接收HttpRequest对象作为第一个参数,一般叫做request。
    • 注意视图函数的名称并不重要,不需要用一个统一的命名方式来命名,以便让Django识别它。我们将其命名为current_datetime,是因为这个名称能够精确地反映出它的功能。
    • 这个视图会返回一个HttpResponse对象,其中包含生成的响应。每个视图函数都要返回HttpResponse对象。

    http请求——响应过程中有两个核心对象:

    http请求对象:HttpRequest

    http响应对象:HttpResponse

    所在位置:django.http

    2. 快捷函数

    2.1 render函数

    语法格式为: >render(request, template_name[, context])

    作用:

    结合一个给定的模板和一个给定的上下文字典,并返回一个渲染后的HttpResponse对象。

    参数:

    request: 用于生成响应的请求对象。

    template_name: 要使用的模板的完整名称,可选的参数。

    context: 添加到模板上下文的一个字典。默认是一个空字典。如果字典中的某个值是可调用的,视图将在渲染模板之前调用它。

    content_type:生成的文档要使用的MIME类型。默认为DEFAULT_CONTENT_TYPE设置的值。

    status: 响应的状态码。默认为200.

    2.2 redirect()函数

    urls.py: ```Python

    url(r"login", views.login),
    url(r"yang_back", views.yang_back),

    views.py
    ```Python
    def login(request):
        if req.method=="POST":
            if 1:
                # return redirect("/yang_back/")
                name="yangwei"
    
                return render(request,"my backend.html",locals())
    
        return render(request,"login.html",locals())
    
    
    def yang_back(req):
    
        name="杨魏"
    
        return render(req,"my backend.html",locals())
    

    login.html

    
    <form action="/login/" method="post">
        <p>姓名<input type="text" name="username"></p>
        <p>性别<input type="text" name="sex"></p>
        <p>邮箱<input type="text" name="email"></p>
        <p><input type="submit" value="submit"></p>
    </form>
    

    my backend.html

    <h1>用户{{ name }}你好</h1>
    

    2.3 redirect()函数和render()函数的区别

    1. render的页面需要模板语言渲染,需要的将数据库的数据加载到html,那么所有的这一部分除了写在yang_back的视图函数中,必须还要写在login中,代码重复,没有解耦。
    2. the most important: url没有跳转到/yang_back/,而是还在/login/,所以当刷新后又得重新登录。
  • 相关阅读:
    HDU--1212大数取模
    欧拉函数
    自制体重转换器
    常用快捷键
    Markdown基本语法
    python全栈开发day50-jquery之ajax、XmlHttpRquest
    python全栈开发day49-jquery的位置信息、事件流、事件对象,事件委托,事件绑定和解绑
    阳历转阴历算法
    python全栈开发day48-jqurey自定义动画,jQuery属性操作,jQuery的文档操作,jQuery中的ajax
    python全栈开发day47-jqurey
  • 原文地址:https://www.cnblogs.com/yang-wei/p/9997682.html
Copyright © 2020-2023  润新知