硬杠后端(后端坑系列)——Django前

发布时间:2019-05-21 21:30:36编辑:auto阅读(2081)

    Django是一个开放源代码的Web应用框架,由Python写成,采用了MVC的框架模式.

    MVC

    MVC是一种软件设计典范,用一种业务逻辑、数据、界面显示分离的方法组织代码,将业务逻辑聚集到一个部件里面,在改造和个性化定制界面及用户交互的同时,不需要重新编写业务逻辑。MVC被独特的发展起来用于映射传统的输入,处理和输出功能在一个逻辑的图形化用户界面的结构中.

    M->Model(模型):是应用程序中用于处理应用程序数据逻辑的部分,通常模型对象负责在数据库中存取数据

    V->View(视图):是应用程序中处理数据显示的部分,是应用程序中处理数据显示的部分

    C->Controller(控制器):是应用于程序中处理用户交互的部分,通常控制器负责从视图读取数据,控制用户输入,并向模型发送数据

    核心思想:解耦

    优点:降低各功能模块之间的耦合性,方便变更,更容易重构代码,最大程度上实现代码的重用

    MTV

    有些WEB框架觉得MVC的字面意思很别扭,就给它改了一下,改成了MTV,本质其实也是MVC

    M->Model(模型):负责业务对象与数据库的对象(ORM)

    T->Template(模板):负责如何把页面展示给用户

    V->View(视图):负责业务逻辑,并在适当的时候调用Model和Template

    安装

    终端输入pip install Django==1.11.4(不写版本默认为最新版本)

    验证

    进入Python环境——>>>import django   导入成功即验证成功

    创建项目

    创建目录——终端进入到创建的目录下,输入django-admin startproject project——目录里生成以下文件即成功

    设计表结构

     在数据库中设计用来测试或使用的表就行

    配置数据库(Django默认使用的是SQLite数据库)

    1.在settings.py文件中,通过DATABASES选项进行数据库配置

    2.配置SQL

    python3.x安装的是pyMySQL

    在__init__.py文件中写入两行代码:import pymysql

                    pymysql.install_as_MySQLdb()

    格式:

    DATABASES = {

    'default': {

    'ENGINE': 'django.db.backends.mysql', # 使用的数据库类型

    'NAME': '数据库名',

    'USER': '用户名',

    'PASSWORD': '数据库密码',

    'HOST': '数据库服务器ip',

    'PORT': '端口'

        }

    }

    创建应用(在一个项目中可以创建多个应用,每个应用进行一种业务处理)

    终端进入Python-Django目录下的project目录

    执行python manage.py startapp myApp,然后会生成一个myApp文件夹:

    激活应用

    在settings.py文件中,将myApp应用加入到INSTALLED_APPS选项中

    INSTALLED_APPS = [

    'django.contrib.admin',

    'django.contrib.auth',

    'django.contrib.contenttypes',

    'django.contrib.sessions',

    'django.contrib.messages',

    'django.contrib.staticfiles',

    'myApp'

    ]

    定义模型(在model.py文件中定义模型)

    例如:

    from django.db import models

     

    # Create your models here.

    # 一个模型就是一个表

    class Grades(models.Model):

    # 表中的属性

    # 字符串

    gname = models.CharField(max_length=20)

    # 时间类型

    gdate = models.DateField()

    # 数字类型

    ggirlnum = models.IntegerField()

    gboynum = models.IntegerField()

    # 布尔类型

    isDelete = models.BooleanField(default=False)

     

    class Students(models.Model):

    sname = models.CharField(max_length=20)

    sgender = models.BooleanField(default=True)

    sage = models.IntegerField()

    scontent = models.CharField(max_length=20)

    isDelete = models.BooleanField(default=False)

    # 关联外键

    sgrage = models.ForeignKey("Grades", on_delete=models.CASCADE) 

    说明:不需要定义主键,在生成时自动添加,并且值为自动添加

    生成迁移文件

    因为本来技术和经验不足,这一步对于新手来说,运气不好真的是有可能把你心态搞崩,反正我尝试了好多百度上的解决办法,都以失败而告终,最终看到一个帖子(之前看过的,忘记是哪一篇了),让我把我即将喷出的一口老血强行咽了下去😷,如果出现了类似的问题,可以先百度一下,百度上有常用的办法,如果不行的话,再来尝试我看到的这个方法:

    执行python manage.py makemigrations :在migrations目录下生成一个迁移文件,此时数据库中还没有生成数据库

    执行python manage.py migrate:相当于执行sql语句创建数据表,如果出现:

    (1)pymysql.err.OperationalError:(1045,u"Access denied for user 'root '@'localhost'(using password:No)")

    原因:新版mysql使用的caching_sha2_password, 换成mysql_native-password就可以了

    解决办法:更换root密码验证,在终端连接mysql,输入:mysql -u root -p XXXX,然后输入ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'XXXX';

    (2)pymysql.err.ProgrammingError:(1064)(字符串转译问题)

    原因:数据库版本不合适,我的是5.5,会报错

    解决办法:换成5.7版本

    测试数据操作

    增删改查测试一下即可

    启动服务器

    格式:python manage.py runserver ip:port(ip可以不写,不写的话代表本机ip,端口号默认为8000)

    说明:这是一个纯python写的轻量级web服务器,仅仅在开发测试中使用

     

     

     

    欢迎大佬前来指正分享,本文部分内容参考他人博客,如有侵权,请联系小子!

关键字