Django学习笔记-视图(views)的使用

这篇具有很好参考价值的文章主要介绍了Django学习笔记-视图(views)的使用。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

Django中可以使用views进行管理,类似于WPF的MVVM的ViewModel层,也相当于MVC架构的模Controller层。

一、基于函数的视图FBV(Function-Based View)

通过定义一个函数,包含HttpRequest对象作为参数,用来接受客户端请求,然后返回HttpResponse对象做为响应放回给客户端。

1.1 先定义一个模板文件

在template中定义一个模板文件persondetail.html

Django学习笔记-视图(views)的使用,# Django,django,学习,笔记

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Person Details</title>
</head>
<body>
    {{ Person }}
    {{ Person.name }}
    {{ Person.phone }}
</body>
</html>

1.2 在views.py中创建一个函数person_detail

Django学习笔记-视图(views)的使用,# Django,django,学习,笔记

def person_detail(request: HttpRequest, pk: int):
    """
        Show person detail
        pk: the primarykey of person.
    """

    try:
        p = Person.objects.get(pk=pk)
    except Person.DoesNotExist:
        raise Http404("Person Does Not Exist.")
    return render(request, "persondetail.html", {"Person": p})

1.3 在urls.py中添加新的url

from django.urls import path, re_path
from serverapp import views as serverapp_views


urlpatterns = [
    path('test/2023', serverapp_views.test),        # 精确匹配
    path('converter/<int:num>', serverapp_views.converter),         # 格式转换
    re_path(r'^re/(?P<num>[0-9]{1,4})/$', serverapp_views.rematch),         # 正则表达式,通过添加起止符限制匹配,避免中间多级路径后匹配到,造成错误匹配。
    path('person', serverapp_views.get_person),        # 获取人员信息
    path('personform', serverapp_views.get_personform),        # 使用表单获取人员信息
    path('person_detail/<int:pk>', serverapp_views.person_detail)         # 视图演示,展示人员信息
]

1.4 运行软件,在客户端访问

Django学习笔记-视图(views)的使用,# Django,django,学习,笔记

Django学习笔记-视图(views)的使用,# Django,django,学习,笔记

 二、基于类的视图CBV(Class-Based View)

基于类的视图与基于函数的视图大同小异,只不过是使用类代替函数。

2.1 再views.py文件中定义类

class PersonDetailView(View):
    """人员信息视图类"""

    form_class = PersonForm                 # 定义表单类
    initial = {"key":"value"}               # 定义表单初始值
    tamplate_name = "personform.html"     # templage file name

    def get(self, request: HttpRequest, *args, **kwargs):
        """Get method"""

        # 渲染表单
        return render(request, self.tamplate_name, {"personform": self.form_class(initial= self.initial)})
    
    def post(self, request: HttpRequest, *args, **kwargs):
        """POST method"""

        form = self.form_class(request.POST)
        if form.is_valid():
            # get data
            name = form.cleaned_data['name']
            phone = form.cleaned_data['phone']

            return HttpResponse(f"The peson name is {name}, phone is {phone}")
        
        return render(request, self.tamplate_name, {"personform": form})

2.2 注册新的url

from django.urls import path, re_path
from serverapp import views as serverapp_views


urlpatterns = [
    path('test/2023', serverapp_views.test),        # 精确匹配
    path('converter/<int:num>', serverapp_views.converter),         # 格式转换
    re_path(r'^re/(?P<num>[0-9]{1,4})/$', serverapp_views.rematch),         # 正则表达式,通过添加起止符限制匹配,避免中间多级路径后匹配到,造成错误匹配。
    path('person', serverapp_views.get_person),        # 获取人员信息
    path('personform', serverapp_views.get_personform),        # 使用表单获取人员信息
    path('person_detail/<int:pk>', serverapp_views.person_detail) ,        # 视图演示,展示人员信息
    path('personformview', serverapp_views.PersonDetailView.as_view())         # 基于类的视图
]

2.3 定义html文件

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>User Name</title>
</head>
<body>
    <!--action 是访问的url-->
    <form action="/serverapp/personformview" method="post">
        {% csrf_token %}        <!--防止跨域攻击-->
        {{ personform }}        <!--引用表单,views函数中定义的名称一致-->
        <button type="submit">提交</button>
    </form>
</body>
</html>

2.4 访问服务器

Django学习笔记-视图(views)的使用,# Django,django,学习,笔记

Django学习笔记-视图(views)的使用,# Django,django,学习,笔记文章来源地址https://www.toymoban.com/news/detail-608980.html

到了这里,关于Django学习笔记-视图(views)的使用的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Django学习笔记-表单(forms)的使用

    在Django中提供了了form表单,可以更为简单的创建表单模板信息,简化html的表单。 表单通常用来作为提交数据时候使用。 在项目文件夹下创建一个template文件夹,用于存储所有的html模板文件。 填写项目的相对路径即可。 在app中views.py文件中添加响应函数: 在urls.py添加路由设

    2024年02月15日
    浏览(47)
  • Django 高级指南:深入理解和使用类视图和中间件

    Django 是一款强大的 Python Web 框架,它提供了一套完整的解决方案,让我们能够用 Python 语言快速开发和部署复杂的 Web 应用。在本文中,我们将会深入研究 Django 中的两个高级特性:类视图(Class-Based Views)和中间件(Middleware)。 在 Django 中,视图是一个 Python 函数,它接收一

    2024年02月13日
    浏览(44)
  • Django学习笔记:第三章Django的路由

    URL是网站Web服务的入口。用户在浏览器输入URL发出请求后,django会根据路由系统,运行对应的视图函数,然后返回信息到浏览器中。 创建项目时,会自动生成urls.文件,文件中定义了项目的路由信息,成为项目的路由解析入口。在自建的应用中可以手动配置独立的urls.py文件。

    2024年02月16日
    浏览(79)
  • Django学习笔记:第二章django的安装和创建应用

    终端运行 查看django是否安装成功 在控制台运行 在特定文件夹内打开终端运行 生成 进入上图的Scripts文件夹内,打开终端 先正常安装VSCode 再安装python插件 安装Django插件,搜索django,安装前两个 特点 功能完善,开发速度快,安全性强 有完善的在线文档 模型自带数据库ORM组件

    2024年02月16日
    浏览(48)
  • Django基础讲解-路由控制器和视图(Django-02)

    参考链接: Django源码阅读:路由(二) - 知乎 Route路由, 是一种映射关系!路由是把客户端请求的  url路径与视图进行绑定  映射的一种关系。 这个/timer通过路由控制器最终匹配到myapp.views中的视图函数 timer 。 在django中所有的路由最终都被保存到一个变量 urlpatterns , urlpatt

    2024年02月07日
    浏览(35)
  • 【Django】学习笔记

    个人主页:丷从心· 系列专栏:Django MVC与MTV MVC设计模式 MTV设计模式 Django下载 Django工程创建与运行 创建工程 运行工程 子应用创建与注册安装 创建子应用 注册安装子应用 配置 settings.py 中的 INSTALLED_APPS 数据模型 ORM框架 配置 models.py 模型迁移 Tools - Run manage.py Task Admin站点 修

    2024年04月28日
    浏览(42)
  • Django学习笔记(2)

    属于自动执行了python manage.py 直接在里面运行startapp app01就可以创建app01的项目了 之后在setting.py中注册app01 其中用户中加入部门数据,如果是正常开始用ID,对于特别大的公司用字符串名称,这样可以防止连表的时间消耗,属于用空间换时间。 ###前端页面 上面的导航栏代码在

    2024年02月12日
    浏览(48)
  • django学习笔记(1)

    先创建一个文件夹用来放django的项目,我这里是My_Django_it 之后打开到该文件下,并用下面的指令来创建myDjango1项目 类似蓝图 模块化 在myDjango2中的settings.py中 最后一句加上\\\"app01.apps.App01Config\\\", 编写URL和视图的关系 bug: 若出现下面报错 说明端口被占用了,很可能是酷狗占用了,

    2024年02月15日
    浏览(48)
  • Django+Celery学习笔记

    Django+Celery学习笔记 DJANGO中使用CELERY实现定时任务(用DJCELERY) https://www.cnblogs.com/wumingxiaoyao/p/8521567.html Django中celery机制的使用总结 https://blog.csdn.net/Enjolras_fuu/article/details/108513357 代码 https://github.com/furuiyang0715/celery_learn 参考 https://www.celerycn.io/yong-hu-zhi-nan/canvas-she-ji-gong-zuo-liu-che

    2024年02月12日
    浏览(40)
  • Django学习笔记

    创建项目:django-admin startproject 项目名 创建APP(进入工程目录):python manage.py startapp 网站名 创建库表(进入工程目录):python manage.py makemigrations 执行库表建立(进入工程目录):python manage.py migrate 启动运动:python manage.py runserver 模板渲染嵌入语法:在html可以嵌入后台语言 区分符

    2024年02月09日
    浏览(40)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包