• 认识django


    #### Web框架
    
    ---
    
    ###### 常见的框架有
    
    ```
    Flask        Django        Tornado        Pyramid        Bottle        Web2py        web.py
    ```
    
    ###### mvc架构
    
    ```
    -- model
    -- controller
    -- view
    数据和数据的解耦合
    
    MVC:模型-视图-控制器
    目标:模型(数据)和视图(显示)解耦合
    ```
    
    ![9A163A7E421E04FD77B1807356B447](/Users/lizhonglin/Library/Containers/com.tencent.qq/Data/Library/Caches/Images/E9A163A7E421E04FD77B1807356B447F.jpg)
    
    通过控制器,将数据和显示分离,好处是同一个视图可以加载不同的模型,同一个模型也可以显示成不同的视图
    
    稍具规模的系统都会使用MVC架构或者它的变体(MVP、MVVM等)
    
    它是对面向对象设计原则中迪米特法则的一个最好的践行
    
    ###### python中的的模式
    
    ![CAC360BC60D562BC3E621664BF9ABB](/Users/lizhonglin/Library/Containers/com.tencent.qq/Data/Library/Caches/Images/5CAC360BC60D562BC3E621664BF9ABBB.jpg)
    
    ##### Windows中django操作
    
    ###### 1,检查python的版本
    
    ```
    python --version
    python --version
    ```
    
    ###### 2,创建虚拟环境
    
    ```
    python -m venv  hello_django_venv
    ```
    
    ###### 3,     进入文件夹
    
    ```
    cd hello_django_venv
    激活虚拟环境
    cd srcipts      
    deactivate (不激活)
    ```
    
    ###### 4,    安装django框架
    
    ```
    pip install django  版本(指定版本就加上)      {==1.11   (==指定版本)}
    ```
    
    ###### 5,检查django的版本
    
    ```
    django-admin --version
    /Library/Frameworks/Python.framework/Versions/3.6/bin/python3.6
    ```
    
    ###### 6, 创建项目
    
    ```
    django-admin startproject hello_django
    ```
    
    ###### 7,进入项目目录
    
    ```
    python manage.py runserver  启动服务
    
    ```
    
    
    
    ##### Macoslinux下面创建django虚拟环境
    
    ```
    1,mkdir hello_django             创建项目目录
    2,cd hello_django/               切换到项目目录
    3,python3 -m venv hd_venv         使用venv模块创建虚拟环境,目录名hd_venv
    4,source hd_venv/bin/activate    激活虚拟环境 
    5,python -m pip install --upgrade pip  更新pip到最新版本
    6,pip install django              使用pip安装django
    7,django-admin --version       通过安装django时安装的脚本工具django-admin检查django版本
    8,在虚拟环境下面创建项目
        django-admin startproject hello_django
    9,启动服务
        python manage.py runserver  启动服务
        ctrl+c 停服务
        
    10,建应用
       python manage.py startapp hrs
       
    11,注册功能
    # 下面的列表容器表示项目中安装了哪些应用
    INSTALLED_APPS = [
        'django.contrib.admin',
        'django.contrib.auth',
        'django.contrib.contenttypes',
        'django.contrib.sessions',
        'django.contrib.messages',
        'django.contrib.staticfiles',
        'hrs',
        'crms',
        'sysms',
    ]
    12,修改view.py文件
    13,配置urls.py
    ```
    
    ###### 配置文件
    
    ```
    
    #国际化
    USE_I18N = True
    #本地化
    USE_L10N = True
    
    USE_TZ = True
    
    #保证存储到数据库中的是 UTC 时间;
    #在函数之间传递时间参数时,确保时间已经转换成 UTC 时间;
    
    ```
    
    ###### 查看你已经更改了那个配置项
    
    ```
    python manage.py diffsettings
    ```
    
    ###### 配置网站静态资源
    
    ```
    STATIC_URL = '/static/'   配置静态资源
    
    {% load static %}     加载静态资源
    
    原文:https://docs.djangoproject.com/en/2.0/howto/static-files/
    
    ```
    
    ###### 连接数据库
    
    ```
    1,配置数据库
    DATABASES = {
        'default': {
            'ENGINE': 'django.db.backends.mysql',
            'NAME': 'oa',
            'HOST':'localhost',
            'PORT': '3306',
            'USER': 'root',
            'PASSWORD': '123456'
            
        }
    }
    
    2,安装依赖库
    pip install pymysql
    
    3,配置__init__
    
    ```
    
    ![mage-20180522100120](/var/folders/v9/jcddlqfx4tg9c57c6xvt8gyr0000gn/T/abnerworks.Typora/image-201805221001203.png)
    
    ```
    4.执行
    python manage.py migrate  迁移工具  (可以自动建表)
    ```
    
    
    
    ```
    生成迁移
    python manage.py makemigrations hrs   
    
    执行迁移
    python manage.py migrate      
    ```
    
    > 两个一对多 取代多对多
    
    
    
    ###### 创建Django超级管理员
    
    ```
    ^C(venv) lizhonglindeMacBook-Pro:oa lizhonglin$ python manage.py createsuperuser 
    Username (leave blank to use 'lizhonglin'): admin
    Email address: admin@126.com
    Password: 
    Password (again): 
    This password is too short. It must contain at least 8 characters.
    This password is too common.
    This password is entirely numeric.
    Password: 
    Password (again): 
    Superuser created successfully.
    (venv) lizhonglindeMacBook-Pro:oa lizhonglin$ 
    
    ```
    
    ###### 注册admin.py
    
    ```
    例如:
    from django.contrib import admin
    
    from cart.models import Goods
    
    
    class GoodsAdmin(admin.ModelAdmin):
        list_display = ('id','name','price','image')
        search_fields = ('name',)
        
    admin.site.register(Goods,GoodsAdmin)
    ```
    
    ###### 项目中的shell
    
    ```
    python manage.py shell
    ```
    
    ###### 增    删    改    查
    
    ```
    创建一个部门
    dept = Dept(no='90',name='研发二部',location='武汉')
    
    获取一个部门
    Dept.objects.get(pk=20)  获取一个
    
    获取所有
    Dept.object.all()
    
    保存
    dept.save()  
    
    删除
    dept.delect() 
    
    
    ```
    
    表格 :
    
    | no   | name     | location |
    | ---- | -------- | -------- |
    | 10   | 技术二部 | 武汉     |
    | 20   | 行政部   | 成都     |
    | 30   | 销售部   | 重庆     |
    | 40   | 综合部   | 成都     |
    | 60   | 网络部   | 成都     |
    |      |          |          |
    
    ```
    python manage.py shell  
    
    精确查询某个部门
    Dept.objects.filter(name='行政部')
    
    模糊查询
    >>> Dept.objects.filter(name__contains='')
    <QuerySet [<Dept: 网络部>]>
    >>> 
    
    忽略大小写模糊查询
    >>> Dept.objects.filter(name__icontains='')
    
    查询大于30的部门
    >>> Dept.objects.filter(no__gt=30)
    <QuerySet [<Dept: 综合部>, <Dept: 网络部>]>
    
    查询到大于等于30的部门
    >>> Dept.objects.filter(no__gte=30)
    <QuerySet [<Dept: 销售部>, <Dept: 综合部>, <Dept: 网络部>]>
    
    倒叙查询所有
    >>> Dept.objects.all().order_by('-no')
    
    
    切片查询
    >>> Dept.objects.all().order_by('no')[0:3]
    <QuerySet [<Dept: 技术二部>, <Dept: 行政部>, <Dept: 销售部>]>
    >>> 
    
    原始查询
    >>> Dept.objects.raw('select name from tb_dept')
    <RawQuerySet: select name from tb_dept>
    
    查询小于30的部门
    >>> Dept.objects.filter(no__lt=30)
    <QuerySet [<Dept: 技术二部>, <Dept: 行政部>]>
    >>> 
    
    删除部门
    >>> Dept.object.get(pk=30).delect()
    
    ```
    
    ###### django配置日志
    
    ```
    #配置日志输出到控制台
    
    LOGGING = {
        'version': 1,
        'disable_existing_loggers': False,
        'handlers': {
            'console': {
                'class': 'logging.StreamHandler',
            },
        },
        'loggers': {
            'django': {
                'handlers': ['console'],
                'level': os.getenv('DJANGO_LOG_LEVEL', 'DEBUG'),
            },
        },
    }
    ```
    
    ###### request
    
    ```
    request.META     获取请求头的东西和本机的东西
    request.POST
    request.GET      获取使用GET请求的参数
    ```
    
    
    
    ```
    查询这个部门的所有员工
    
    1, Emp.objects.filter(dept__no=no) 
    
    反向查询
    先查询部门在查部门的员工 建表的时候可以加在ForeignKey中related_name 
    related_name="+" 阻止反向查询
    2, Dept.object.filter(no=no).emp_set.all()  
    
    3 .select_related('dept')
    
    ```
    
    ###### QuerySet知识点
    
    QuerySet 使用的是惰性查询  ===如果不是非要取数据的时候就不会去取数据,要用到数据的时候才会去取数据.这样做是为了节省服务器的内存开销(延迟开销)   节省空间的---消耗时间
    
    数据量大的时候先:筛选—排序—切片 .select_related
    
    > 写程序要尽量避免硬代码硬编码
    
    ###### 配置URL
    
    ```
    django1.x版本
    命名捕获组 URL('emps/(?P<NAME>[0-9]+)',views.emps
    
    diango2.x版本
    path('emps/<int:no>',views.emps,name='empsindept'),
    ```
    
    ---
    
    ##### 
    
    ---
  • 相关阅读:
    2017-2018-1 20155232 20155215《信息安全技术》实验四—— 木马及远程控制技术
    ## 2017-2018-1 20155232 实验三 实时系统
    # 2017-2018-1 20155232 《信息安全系统设计基础》第九周学习总结
    linux pwd指令C实现
    2017-2018-1 20155232 《信息安全系统设计基础》第八周学习总结以及课下补做
    2017-2018-1 20155232 《信息安全系统设计基础》第七周学习总结
    2017-2018-1 20155232 20155215 实验二 固件程序设计
    # 2017-2018-1 20155232 《信息安全系统设计基础》第六周学习总结
    # 2017-2018-1 20155232《信息安全技术》实验二——Windows口令破解
    # 2017-2018-1 20155232 《信息安全系统设计基础》第五周学习总结
  • 原文地址:https://www.cnblogs.com/xiaochuichui/p/13280508.html
Copyright © 2020-2023  润新知