Django之视图view

Django之视图view

  1. 试图介绍和项目准备

在这里插入图片描述

  • 视图介绍:
    • 视图就是应用中views.py文件中的函数

    • 视图的第一个参数必须为HttpRequest对象还可能包含下参数如

      • 通过正则表达式组获取的位置参数
      • 通过正则表达式组获得的关键字参数
    • 视图必须返回一个HttpResponse对象或子对象作为响应

    • 子对象: JsonResponse HttpResponseRedirect

    • 视图负责接受Web请求HttpRequest,进行逻辑处理,返回Web响应HttpResponse请求者

    • 响应内容可以是HTML内容,404错误,定向,json数据…

    • 视图处理过程如下图
      在这里插入图片描述
      使用视图时需要进行两步操作,两步操作不分先后

    1. 配置URLconf
    2. 在应用/views.py中定义视图
  • 项目准备:

    1.创建项目+2.创建应用+3.安装应用+4.配置模板路径+5.本地化+6.mysql数据库

    +7.URLconf+8.视图+9.定义模型类+10.生成迁移文件+11.同步到数据库中+12.添加测试数据

    workon py3_django
    
    
    # 创建项目
    django-admin startproject bookmanager
    
    
    # 创建应用,更换解释器
    python manager.py startapp book
    
    # 安装应用在INSTALLED_APPS中添加
    'book.apps.BookConfig'
    
    
    # 配置模板路径:在应用同级目录下,创建templates模板文件夹
    # 修改settings中TEMPLATES中的代码
    'DIRS': [os.path.join(BASE_DIR,'templates')],
    
    
    # 本地化
    # 设置中文
    LANGUAGE_CODE = 'zh-Hans'
    # 亚洲上海时区
    TIME_ZONE = 'Asia/Shanghai'
    
    
    # mysql数据库
    # 1.修改DATABASES配置信息
    DATABASES = {
         
        'default': {
         
            'ENGINE': 'django.db.backends.mysql',
            'HOST': '127.0.0.1',  # 数据库主机
            'PORT': 3306,  # 数据库端口
            'USER': 'root',  # 数据库用户名
            'PASSWORD': 'mysql',  # 数据库用户密码
            'NAME': 'book'  # 数据库名字
        }
    }
    # 2.在Django的工程同名子目录的__init__.py文件中添加如下语句
    import pymysql
    
    pymysql.install_as_MySQLdb()
    
    
    
    # URLconf配置
    # 1.项目中匹配urls
    # 正则 : 路径只要不是admin/就算匹配成功。并包含到应用中的urls.py
    from django.conf.urls import url,include
    from django.contrib import admin
    
    urlpatterns = [
        url(r'^admin/', admin.site.urls),
        #正则为:只要不是 admin/ 就算匹配成功
        url(r'^',include('book.urls'))
    ]
    # 2.应用中创建 urls.py
    # 正则 : 路径中包含booklist/,就调用视图中对应的bookList函数
    from django.conf.urls import url
    from book.views import bookList
    
    urlpatterns = [
    
        # 匹配书籍列表信息的URL,调用对应的bookList视图
        url(r'^booklist/$',bookList)
    ]
    
    
    
    # 定义视图:测试项目逻辑
    from django.http import HttpResponse
    
    def testproject(request):
    	return HttpResponse('测试项目逻辑')
        
    # 在models.py 文件中定义模型类    
    from django.db import models
    
    # Create your models here.
    # 准备书籍列表信息的模型类
    class BookInfo(models.Model):
        # 创建字段,字段类型...
        name = models.CharField(max_length=20, verbose_name='名称')
        pub_date = models.DateField(verbose_name='发布日期',null=True)
        readcount = models.IntegerField(default=0, verbose_name='阅读量')
        commentcount = models.IntegerField(default=0, verbose_name='评论量')
        is_delete = models.BooleanField(default=False, verbose_name='逻辑删除')
    
        class Meta:
            db_table = 'bookinfo'  # 指明数据库表名
            verbose_name = '图书'  # 在admin站点中显示的名称
    
        def __str__(self):
            """定义每个数据对象的显示信息"""
            return self.name
    
    # 准备人物列表信息的模型类
    class PeopleInfo(models.Model):
        GENDER_CHOICES = (
            (0, 'male'),
            (1, 'female')
        )
        name = models.CharField(max_length=20, verbose_name='名称')
        gender = models.SmallIntegerField(choices=GENDER_CHOICES, default=0, verbose_name='性别')
        description = models.CharField(max_length=200, null=True, verbose_name='描述信息')
        book = models.ForeignKey(BookInfo, on_delete=models.CASCADE, verbose_name='图书')  # 外键
        is_delete = models.BooleanField(default=False, verbose_name='逻辑删除')
    
        class Meta:
            db_table = 'peopleinfo'
            verbose_name = '人物信息'
    
        def __str__(self):
            return self.name
       
       
       
     # 生成迁移文件
     python manage.py makemigrations
     # 同步到数据库中
     python manage.py migrate
     # 添加测试数据
     insert into bookinfo(name, pub_date, readcount,commentcount, is_delete) values
    ('射雕英雄传', '1980-5-1', 12, 34, 0),
    ('天龙八部', '1986-7-24', 36, 40, 0),
    ('笑傲江湖', '1995-12-24', 20, 80, 0),
    ('雪山飞狐', '1987-11-11', 58, 24, 0);
    
    insert into peopleinfo(name, gender
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值