zoukankan      html  css  js  c++  java
  • Django笔记&教程 2-4 视图常用

    Django 自学笔记兼学习教程第2章第4节——视图常用
    点击查看教程总目录

    1 - shortcut

    视图函数需要返回一个HttpResponse对象或者其子类对象。
    不过很多时候直接手写建立一个HttpResponse对象比较麻烦。

    所以Django实现了建立HttpResponse对象的一些快捷方法:
    这些方法收集在django.shortcuts包中。

    比如下一章将会频繁使用的render方法,
    还有本章第二部分会介绍的redirect方法,
    都是django.shortcuts包中的。

    django.shortcuts 官方文档:shortcuts
    django.shortcuts 官方介绍如下:
    The package django.shortcuts collects helper functions and classes that “span” multiple levels of MVC.
    In other words, these functions/classes introduce controlled coupling for convenience’s sake.

    2 - reverse 反向解析

    知道urlpattern名,可通过reverse函数反向解析出对应的url。
    该方法常在模型的get_absolute_url()get_success_url()中用到,然后用于重定向,一般直接使用本文第三部分的重定向语法覆盖实现这些。

    reverse方法位于django.urls中,但也可以从django.shortcuts包中导入。
    其使用语法为:
    reverse(viewname, urlconf=None, args=None, kwargs=None, current_app=None)

    使用示例:
    比如有url:

    path('login/', views.home, name="login"),
    path('user/login/<slug:kind>', views.login, name="login"),
    

    那么在django交互式命令行下,效果如下

    >>> reverse("login")
    '/user/login/'
    >>> reverse("login", kwargs={'kind': 'student'})
    '/user/login/student'
    

    3 - 重定向

    重定向场景:用户未登录情况下,访问需要登录才能访问的url,往往需要重定向到登录页。

    重定向代码一般写在视图函数中:视图函数返回一个重定向对象django.http.HttpResponseRedirect

    不过我们一般使用shortcut里的redirect方法来获得一个重定向对象。

    语法如下:
    redirect(to, *args, permanent=False, **kwargs)
    根据传递的参数返回一个对应的HttpResponseRedirect。
    传入的参数可以是:

    • 一个模型(model): 模型的get_absolute_url()方法将被调用。
    • 一个视图名,可能带有参数: 将调用reverse()函数来反向解析名称。
    • 绝对或相对URL: 将按原样用于重定向位置。

    举例:
    比如有url:

    path('user/login/<slug:kind>', views.login, name="login"),
    

    那么在django交互式命令行下,效果如下

    >>> from django.shortcuts import redirect
    >>> redirect("login", kind='student')
    <HttpResponseRedirect status_code=302, "text/html; charset=utf-8", url="/user/login/student">
    >>> redirect("/user/login/student")
    <HttpResponseRedirect status_code=302, "text/html; charset=utf-8", url="/user/login/student">
    
  • 相关阅读:
    面试中你能做到随机应变吗? 沧海
    QQ只是一场意外 沧海
    面 试 中 要 慎 言 沧海
    你会应对这些面试题吗? 沧海
    面 试 小 技 巧 沧海
    面试抓住最初三分钟至关重要 沧海
    面试的十二种高级错误 沧海
    几种有难度的面试 沧海
    面试技巧: 轻松过关10种方法 沧海
    面 试 细 节 一 点 通 沧海
  • 原文地址:https://www.cnblogs.com/BigShuang/p/14297092.html
Copyright © 2011-2022 走看看