`

从零开始搭建Python web框架——Django(三)

阅读更多

Django支持多种数据库,如PostgreSQL、MySQL、SQLite、Oracle。Django模型提供了统一的接口实现数据的CURD操作,所以可以很方便地切换数据库。

 下面将介绍Django model的使用,笔者以MySQL数据库为例:

步骤↓

  1. 安装mysqlclient,用于Django与数据库的交互:

     ubuntu系统如下:

    sudo apt-get install libmysql-dev
    sudo apt-get install libmysqlclient-dev
    sudo apt-get install python-dev
    sudo pip install mysqlclient
     windows系统如下:

     (1) https://www.lfd.uci.edu/~gohlke/pythonlibs/# 下载对应python版本且对应操作系统位数的版本安装包,如python 2.7,64位操作系统下载:mysqlclient-1.3.7-cp27-none-win_amd64.zip

     (2) 解压安装包,进入目录打开cmd,使用pip install命令安装:

    pip install mysqlclient-1.3.7-cp27-none-win_amd64
       注:若没有安装pip请自行安装。

     

  2. 配置数据库参数:打开Django项目中的settings.py,做如下配置:
    DATABASES = {
        'default': {
            'ENGINE': 'django.db.backends.mysql',  # 或者使用 mysql.connector.django
            'NAME': 'ds',               #数据库名
            'USER':'root',              #数据库用户
            'PASSWORD': '1234',         #数据库密码
            'HOST':'localhost',         #数据库服务器IP
            'PORT':'3306',              #端口
        }
    }
     
  3. 创建app:进入项目根目录,执行:
    django-admin.py startapp TestModel
     windows系统执行:
    django-admin startapp TestModel

    在settings.py中做如下配置,将刚刚建好的app TestModel 配置进项目中:

    INSTALLED_APPS = (
        'django.contrib.admin',
        'django.contrib.auth',
        'django.contrib.contenttypes',
        'django.contrib.sessions',
        'django.contrib.messages',
        'django.contrib.staticfiles',
        'TestModel',               # 添加此项
    )
     

     

     说明:项目和应用的区别?一个应用程序是一个Web应用程序,它可以执行某些操作,例如一个博客系统。一个项目是特定网站的配置和应用程序的集合。一个项目可以包含多个应用。一个应用可以运用到多个项目中去。
    HelloWorld
    |-- TestModel
    |   |-- __init__.py
    |   |-- admin.py
    |   |-- models.py
    |   |-- tests.py
    |   `-- views.py
     
  4. 建立模型:打开models.py,编写一个模型:
    class Movie(models.Model):
        moviename = models.CharField('电影名', max_length=100)
        createtime = models.DateTimeField('发表时间', auto_now_add=True)
        updatetime = models.DateTimeField('更改时间', auto_now=True)
        publishtime = models.CharField('发布时间', max_length=10, blank=True)
        types = models.CharField('类型', max_length=200, blank=True)
        area = models.CharField('地区', max_length=200, blank=True)
        language = models.CharField('语言', max_length=200, blank=True)
        def __unicode__(self):
            return self.moviename
    
    
    class Outsource(models.Model):
        num = models.IntegerField('第几集',default=1)
        outfilelink = models.CharField('外部文件链接',max_length=500)
        movie = models.ForeignKey(Movie,verbose_name="电影")
        def __unicode__(self):
            return self.num
     说明:我们可以在models.py中通过建立一个集成model.Model的类来创建模型。Django可以根据models自动在数据库中建表,属性名即为表的字段名,models.IntegerField等表示字段的数据类型,default参数表示默认值,第一个参数可以显示在Django admin的表单中,我们可以理解为注释,但是Django不会真的给数据库表中添加注释。models.ForeignKey可以指定外键,一部电视剧有好多级,所以在资源表中使用剧集作为外键,除此之外Django模型还支持ManyToMany、OneToOne等关系。blank=True指定字段可以为空,默认不可以。null=True表示Django会使用null填充空字段,默认不允许为空。max_length指定字段长度。
  5. 创建migrations并创建表结构:
    $ python manage.py migrate   # 创建表结构
    $ python manage.py makemigrations TestModel  # 生成migrations
    $ python manage.py migrate TestModel   # 创建表结构
      说明:可以在app目录中看到migrations包,它会记录每次的变更,我们可以打开里边的文件阅读它。打开数据库,我们可以看到表结构已经构建好。注:如果对模型进行了修改,执行以上命令,Django会自动修改表结构,且不会清空表中已存在的数据,十分方便。
  6. 对数据进行CURD操作:(这里我贴一些零散的代码)
    movie = get_object_or_404(Movie, id=id)   #这个方法用在views中,若无记录会返回404
    movie.playcount += 1
    movie.save()    #若数据库中存在数据,修改。若不存在,插入。相当于SQL中的merge语句
    
    n = movie.avaliblesum=movie.outsource_set.count()  #返回该电视剧一共有多少集,参看上边的模型定义例子
    print n
    
    for outsource in movie.outsource_set.all():    ##返回该电视剧的每一集
        print outsource.outfilelink
    #过滤器,相当于where语句,以下意思是(where weight>=5 and classkey=#{key} order by createtime desc limit 0 12)
    movies = Movie.objects.filter(weight__gte=5).filter(classkey=key).order_by('-createtime')[:12]
    #以下意思是(where keyword like '%#{key}%' or moviename like '%#{key}%' ),若要使用'或',必须使用Q对象
    allmovies = Movie.objects.filter(Q(keyword__icontains=key) | Q(moviename__icontains=key))
    
    # 删除id=1的数据
    # Test.objects.filter(id=1).delete()
    
    # 删除所有数据
    # Test.objects.all().delete()
    
    # 修改其中一个id=1的name字段,再save,相当于SQL中的UPDATE
    test1 = Test.objects.get(id=1)
    test1.name = '222'
    test1.save()
    
    # 另外一种方式
    #Test.objects.filter(id=1).update(name='222')
    
    # 修改所有的列
    # Test.objects.all().update(name='222')
    
    
    # 通过objects这个模型管理器的all()获得所有数据行,相当于SQL中的SELECT * FROM
    list = Test.objects.all()
    	
    # 获取单个对象
    response3 = Test.objects.get(id=1) 
    
     注:此处只是举了一些常用例子,若要详细了解,请看官方文档。Django 模型非常强大,可以代替大部分常用的原生SQL语句。当然使用Django也支持引入原生SQL语句,此处不介绍。且使用Django也并非必须要使用Django model,Django是一个低耦合框架,它的每一个模块都可以按需求和喜好取舍。

 

1
0
分享到:
评论

相关推荐

    基于python的web框架django开发的一个统计论文发表的系统源码.zip

    基于python的web框架django开发的一个统计论文发表的系统源码 基于python的web框架django开发的一个统计论文发表的系统源码 基于python的web框架django开发的一个统计论文发表的系统源码 基于python的web框架...

    Python高效开发实战——Django、Tornado、Flask、Twisted 本书源代码

    Python高效开发实战——Django、Tornado、Flask、Twisted 本书源代码 Python高效开发 实战 也许你听说过全栈工程师,他们善于设计系统架构,精通数据库建模、通用网络协议、后端并发处理、前端界面设计,在学术研究...

    Python高效开发实战——Django、Tornado、Flask、Twisted 的随书完整源代码

    本资源提供了四个知名Web框架——Django、Tornado、Flask和Twisted的随书完整源代码,帮助开发者深入理解和实践这些框架,提升开发效率。以下是对这四个框架的详细介绍: 1. Django:Django是一个高级的Python Web...

    Python——django入门教程PPT课件.pptx

    Django 是一个由 Python 编写的开源的 Web 应用框架。Django 的主要目的是简介、快速的开发数据库驱动的网站——动态网站。Django 强调代码复用,多个组件可以方便以“插件”形式服务于整个框架。Django 强调快速...

    python web框架之Django

    此文件是关于python web框架之Django的内容,涵盖的基本比较全面。注意,这篇文档不是代码代码形式的,是对基础的所有文字性概括,还有具体操作,有包含简单的代码实现步骤

    Python高效开发实战——Django、Tornado、Flask、Twisted

    第2部分是框架篇,学习当前最流行的PythonWeb框架,即Django、Tornado、Flask和Twisted,达到对各种Python网络技术融会贯通的目的;第3部分是实战篇,分别对4种框架进行项目实践,利用其各自的特点开发适用于不同...

    Django python web 框架开发,网上商城平台(练手项目)

    3.django框架,pip install django 然后解包 代码.zip文件,进入manage.py所在目录 执行python3 manage.py syncdb或者migrate 如果不提示新建管理员,则可以使用createsuperuser命令(管理员是登陆后台模块的) ...

    PYTHON之Django Web框架源码下载

    Django框架是Python编程语言驱动的一个开源模型-视图-控制器(MVC)风格的Web应用程序框架。使用 Django,我们在几分钟之内就可以创建高品质、易维护、数据库驱动的应用程序。 Django框架的核心组件有: 1、用于...

    Python Web 框架,第 1 部分 使用 Django 和 Python 开发 Web 站点.doc

    标题与描述中的关键词“Python Web框架”,“Django”,“Python开发Web站点”明确指出了本文档的主题,即使用Python编程语言与Django框架进行Web应用开发。文档内容虽然包含了一些无法解析的[pic]标记,但核心信息...

    Python web开发框架Django小例子

    Python Web开发框架Django是一个强大的、高效的开源框架,用于快速构建高质量的Web应用程序。这个小例子将引导我们深入了解Django的基础知识和核心概念。 首先,`mysite`这个文件名通常对应于Django项目的根目录。...

    Python Web Development With Django

    本书《Python Web Development With Django》是一本关于使用Python和Django框架进行Web开发的专业书籍。与其他市场上已有的Django书籍相比,本书的独特之处在于它在三个方面进行了均衡的探讨:Django的基础知识、...

    使用Python Web框架Django开发的一个B2C网上蔬果商城源代码

    使用Python Web框架Django开发的一个B2C网上蔬果商城,包含用户、商品、购物车、订单等模块等等,使用了Celery异步任务队列,MySQL数据库,Redis数据库,FastDFS分布式的图片存储服 务,Nginx负载均衡服务器,uWSGI...

    Python Web Development with Django.pdf

    《Python Web Development with Django》是专门讲解如何使用Python语言和Django框架进行Web开发的一本书。这本书属于“Developer’s Library”系列,该系列为程序员提供高质量的编程参考书籍和教程。该系列书籍由...

    Django+Vue:Python Web全栈开发

    给大家分享一套课程——Django+Vue:Python Web全栈开发(基于Django4.1),已完结10章,附源码。

    基于python框架django实现的个人博客管理系统包含前端+后台

    基于python框架django实现的个人博客管理系统包含前端+后台 运行环境 django1.10+python3+sublime text3+Navicat Premium+cmd命令 项目技术 django+python+sql+cmd+html+css+jquery 使用分页插件,jquery实现万年历...

    基于Python+Django框架搭建的任务管理Saas平台源码.zip

    基于Python Django框架搭建的任务管理Saas平台源码 基于Python Django框架搭建的任务管理Saas平台源码 基于Python Django框架搭建的任务管理Saas平台源码 基于Python Django框架搭建的任务管理Saas平台源码 ...

    pythonWeb框架Django-2.1

    Python Web框架Django是用于构建高效、优雅且实用的Web应用程序的强大工具。Django 2.1是这个著名框架的一个版本,它包含了多项改进和新特性,旨在提升开发者的工作效率和应用性能。在这个版本中,Django进一步强化...

    2020年web开发需要的python框架:Django.pdf

    Django是一个基于Python的自由开源Web应用框架,使用MTV(Model-Template-View)模型架构。该框架于2005年发布,最初用于开发内容管理系统(CMS),后来逐渐演变为一个功能完整的Web框架。 Django的主要特点之一是...

    python开发web框架django使用教程

    Python Django是一种流行的Web开发框架,它提供了一个高效、灵活和可扩展的开发环境。下面是 Python Django框架的使用教程: 安装Django 1. 下载Django-1.8.2.tar.gz压缩包,并将其解压到C盘下,例如C:\Django-...

Global site tag (gtag.js) - Google Analytics