Django基础__(Django简介安装、创建虚拟环境和使用、MVC、MTV模式)

web框架:

web框架: 别人已经设定好的一个web网站模板,你学习它的规则,然后“填空”或“修改”成你自己需要的样子。

  一般web框架的架构是这样的:

                 

Django简介:

        Django发布于2005年,是当前Python世界里最负盛名且成熟的网络框架。最初用来制作在线新闻的Web站点。

    Django是一个用Python编写的开放源代码的Web应用框架(源代码是开源的,遵守BSD版权)。采用了MVC的框架模式,也有很多人把它称为MVT(MTV)模式。


 MVC设计模式

 MVC: 
 M(Model模型)数据, 
 V(View界面)界面,
 C(Controller控制器) 写逻辑处理


     一种软件设计典范,用一种业务逻辑,使数据,界面显示分离的方法组织代码,将业务逻辑聚集到一个部件里面,在改进和个性化定制界面与用户交互的同时,不需要重新编写业务逻辑。

     MVC被独特的发展起来用于映射传统的输入,处理和输出功能在一个逻辑的图形化界面结构中。

     核心思想:解耦(降低耦合度)

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

MVC设计模式:

MVC(Model,View,Controller)
Model:用于封装与应用程序的业务逻辑相关的数据及对数据的处理方法,是Web应用程序中用于处理应用程序的数据逻辑部分,Model通常只提供功能性的接口,通过这些接口可以获取Model的所有功能。
View: 负责数据的显示和呈现,View是对用户的直接输出。

Controller: 负责从用户端收集用户的输入,可以看成提供View的反向功能,主要处理用户交互。

MVC设计模型:

图解:

              

MVC设计模式

图解:

                

MVT(MTV)模式简介:

本质上与MVC没什么差别,也是各组件之间为了保持松耦合关系,只是定义上有些许不同。
Model(数据):负责业务对象与数据库(ORM)的对象(类对应表)
View(逻辑):负责业务逻辑,并在适当的时候调用Model和Template
Template(界面):  模板,负责把页面展示给用户

注意:Django中还有一个url分发器(也可以叫做路由),主要用来将一个个URL页面的请求分发给不同的View进行处理,View再调用相应的Model和Template

MVT设计模式:

    

   **建议用ubuntu操作** 

  1. 创建虚拟环境(virtualenv 和virtualenvwrapper)

    1.1, virtualenv的概述

    virtualenv是用来创建Python的虚拟环境的库,虚拟环境能够独立于真实环境存在,并且可以同时有多个互相独立的Python虚拟环境,每个虚拟环境都可以营造一个干净的开发环境,对于项目的依赖、版本的控制有着非常重要的作用。
    
    虚拟环境有什么意义?
        如果我们要同时开发多个应用程序,应用A需要Django1.11,而应用B需要Django1.8怎么办?
        这种情况下,每个应用可能需要各自拥有一套“独立”的Python运行环境。
        virtualenv就是用来为一个应用创建一套“隔离”的Python运行环境。

1.2, pip的常用命令

  安装pip
    python: sudo apt install python3-pip
  更新pip: 
    pip install --upgrade pip
    
    【sudo update-alternatives --install /usr/bin/python python /usr/bin/python3 150
    这个可以吧python3设置为默认的】
    
        pip install xxx:安装xxx依赖包
        pip list:查看所有依赖包
        pip freeze:查看新安装的包
        pip uninstall xxx :卸载xxx包
 pip 10.0.0 BUG 解决方案:
             使用pip3 出现以下错误:
                            Traceback (most recent call last): 
                            File “/usr/bin/pip3”, line 9, in 
                            from pip import main

                        或者pip 时也出现这个问题 这是pip 10.0.0版本的BUG

                                                    **解决办法**
                                            修改 /usr/bin/pip 文件
                                            使用: sudo vim /usr/bin/pip
                                                   ```
                                                from pip import main
                                               if __name__ == '__main__':
                                                     sys.exit(main())
                                                    ```
                                                        改为:
                                                    ```
                                            from pip import __main__
                                            if __name__ == '__main__':
                                            sys.exit(__main__._main())
                                                    ```

1.3, virtualenv和virtualenvwrapper 的安装和使用

    a, 安装虚拟环境
        sudo apt update
        sudo apt install virtualenvwrapper
        如果不能使用虚拟环境命令,则需要配置环境变量
        1, 进入目录: cd ~
        2, 使用vim打开.bashrc, 定位到最后:shift+g,并添加以下3行代码
            # python
            export WORKON_HOME=/home/自己的用户名/.virtualenvs
            source /usr/share/virtualenvwrapper/virtualenvwrapper.sh
        3, 在家目录创建.virtualenvs目录: mkdir .virtualenvs
        4, 加载修改后的设置,使之生效:source .bashrc 

        【如出现问题,尝试命令:sudo pip3 install virtualenv virtualenvwrapper】
        
    b, 创建虚拟环境: 
            mkvirtualenv env
            mkvirtualenv env2  -p  /usr/bin/python
    c, 退出虚拟环境
        deactivate 
    d, 进入虚拟环境: 
        workon 虚拟环境名称

  1. 安装django
    切换到root用户:  sudo -s
    
    安装Django: pip install django==1.11(也可指定某一版本 pip install django==1.11
    
    测试Django是否安装成功 
    
    进入python环境
        import django
        django.get_version()
  2. 创建一个Django项目

    进入到指定要存放项目的目录,执行 django-admin startproject xxx 来创建一个名字为xxx的工程

    查看默认目录结构

    manage.py:是Django用于管理本项目的命令行工具,之后进行站点运行,数据库自动生成等都是通过本文件完成。
    HelloDjango/__init__.py告诉python该目录是一个python包,暂无内容,后期一些工具的初始化可能会用到
    HelloDjango/settings.py Django项目的配置文件,默认状态其中定义了本项目引用的组件,项目名,数据库,静态资源等。
    HelloDjango/urls.py 维护项目的URL路由映射,即定义当客户端访问时由哪个模块进行响应。
    HelloDjango/wsgi.py 定义WSGI的接口信息,主要用于服务器集成,通常本文件生成后无需改动。

  3. 测试服务器的启动
    python manage.py runserver [ip:port]
    可以直接进行服务运行 默认执行起来的端口是8000
    也可以自己指定ip和端口:
    监听机器所有可用 ip (电脑可能有多个内网ip或多个外网ip):python manage.py runserver 0.0.0.0:8000 
    如果是外网或者局域网电脑上可以用其它电脑查看开发服务器,访问对应的 ip加端口,比如 10.36.132.2:8000
    浏览器访问:http://localhost:8000 可以看到服务器启动成功

  4. 数据迁移迁移的概念:就是将模型映射到数据库的过程

    生成迁移:python manage.py makemigrations

    执行迁移:python manage.py migrate

  5. 创建应用python manage.py startapp XXX创建名称为XXX的应用使用应用前需要将应用配置到项目中,在settings.py中将应用加入到INSTALLED_APPS选项中

    应用目录介绍

    __init__.py:其中暂无内容,使得app成为一个包
    admin.py:管理站点模型的声明文件,默认为空
    apps.py:应用信息定义文件,在其中生成了AppConfig,该类用于定义应用名等数据
    models.py:添加模型层数据类文件
    views.py:定义URL相应函数(路由规则)
    migrations包:自动生成,生成迁移文件的
    tests.py:测试代码文件

  6. 基本视图

    首先我们在views.py中建立一个路由响应函数
    from django.http import HttpResponse
    
    def welcome(request):
        return HttpResponse('HelloDjango');
    
    接着我们在urls中进行注册
    from App import views
    url(r'^welcome/',views.welcome)
    
    基于模块化的设计,我们通常会在每个app中定义自己的urls
    
    在项目的urls中将app的urls包含进来
    from django.conf.urls import include
     url(r'^welcome/',include('App.urls'))
  7. 基本模板

    模板实际上就是我们用HTML写好的页面
    
    创建模板文件夹templates, 在模板文件夹中创建模板文件
    
    在views中去加载渲染模板, 使用render函数: return render(request,'xxx')
  8. 定义模型在models.py 中引入modelsfrom django.db import models

    创建自己的模型类,但切记要继承自 models.Model

    案例驱动,使用模型定义班级,并在模板上显示班级列表

    班级: table : grades
        columns:    
                班级名称 - name
                成立时间 - date
                女生个数 - girlnum
                男生个数 - boynum
                是否删除 - is_delete
  1. Admin 后台管理

    在admin.py中将model加入后台管理:

    admin.site.register(Grade)

    创建超级用户:python manage.py createsuperuser

    访问admin后台:http://127.0.0.1:8000/admin/

  1. 展示班级列表

    在views.py文件中编写班级的视图函数:

    def grade_list(request):
        g_list = Grade.objects.all()  # 获取班级所有数据
        return render(request, 'grade/grade_list.html', {'g_list': g_list})

​ 模板文件:

    {% for grade in g_list %}
        {{ grade.sname }}
    {% endfor %}
  1. 配置url

    在grade App中新建urls.py文件,输入如下代码:

from django.conf.urls import url
from .views import grade_list
urlpatterns = [
    url(r'^grade/$', grade_list),
]

​ 在工程的urls.py文件中添加如下代码:

url(r'^', include('grade.urls')),


         下一篇:Django基础__( url 和 模板 )




猜你喜欢

转载自blog.csdn.net/g_sangsk/article/details/80444650