zoukankan      html  css  js  c++  java
  • 初识Django

    一.Django项目的创建与介绍

    安装Django: 

    在指定解释器环境下安装Django 1.11.x

    在真实python3环境下: pip3 install django==1.11.x

    查看Django版本:

    diango-admin --version

    如果安装出错,采用管理员命令行

    创建项目:

    先前往目标路径,然后执行:diango-admin startproject project_name

    '''
    project_name:项目目录,包含项目最基本的一些配置
        -- __init__.py:模块的配置文件
        -- settings.py:配置总文件
        -- urls.py:url配置文件,django项目中的所有页面都需要对其配置url地址
        -- wsgi.py:(web server gateway interface),服务器网关接口,python应用与web服务器直接通信的接口
    templates:模板文件夹,存放html文件的(页面),支持使用Django模板语言(DTL),也可以使用第三方(jinja2)
    manage.py:项目管理器,与项目交互的命令行工具集的入口,查看支持的所有命令python3 manage.py
    '''

    二.应用的创建与介绍

    Django是面向应用开发,在应用中完成具体的业务逻辑;应用app指的是项目中的一个功能模块,一个项目可以拥有多个功能模块,但至少有一个,Django称之为app。

    创建app(在项目目录下):python3 manage.py startapp app_name

    去项目的settings文件添加 应用名 到INSTALLED_APPS

    '''
    migrations:数据迁移(移植)模块,内容都是由Django自动生成
        -- __init__.py
    __init__.py
    admin.py:应用的后台管理系统配置
    apps.py:django 1.9后,本应用的相关配置
    models.py:数据模型模块,使用ORM框架,类似于MVC模式下的Model层
    tests.py:自动化测试模块,可以写自动化测试脚本
    views.py:执行相应的逻辑代码模块
    '''

     终端启动项目(项目根目录下):python3 manage.py runserver 127.0.0.1:7777

    三.配置文件简介

    项目目录下settings.py文件

    """
    Django settings for dg02 project.
    
    Generated by 'django-admin startproject' using Django 1.11.11.
    
    For more information on this file, see
    https://docs.djangoproject.com/en/1.11/topics/settings/
    
    For the full list of settings and their values, see
    https://docs.djangoproject.com/en/1.11/ref/settings/
    """
    
    import os
    
    # Build paths inside the project like this: os.path.join(BASE_DIR, ...)
    BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
    
    
    # Quick-start development settings - unsuitable for production
    # See https://docs.djangoproject.com/en/1.11/howto/deployment/checklist/
    
    # SECURITY WARNING: keep the secret key used in production secret!
    # 项目安全码
    SECRET_KEY = '&1(3_+f3o*#_hxzeyq1js^@%kkhmo8#@#$6*-dg2(6sd_l#w(-'
    
    # SECURITY WARNING: don't run with debug turned on in production!
    # 开发阶段采用debug
    DEBUG = True
    # 可以访问该项目的host们
    ALLOWED_HOSTS = []
    
    
    # Application definition
    # 配置app
    INSTALLED_APPS = [
        'django.contrib.admin',
        'django.contrib.auth',
        'django.contrib.contenttypes',
        'django.contrib.sessions',
        'django.contrib.messages',
        'django.contrib.staticfiles',
        'app.apps.AppConfig',
    ]
    # 中间件
    MIDDLEWARE = [
        'django.middleware.security.SecurityMiddleware',
        'django.contrib.sessions.middleware.SessionMiddleware',
        'django.middleware.common.CommonMiddleware',
        # 'django.middleware.csrf.CsrfViewMiddleware',
        'django.contrib.auth.middleware.AuthenticationMiddleware',
        'django.contrib.messages.middleware.MessageMiddleware',
        'django.middleware.clickjacking.XFrameOptionsMiddleware',
    ]
    # 项目根路由
    ROOT_URLCONF = 'dg02.urls'
    # 模板配置
    TEMPLATES = [
        {
            'BACKEND': 'django.template.backends.django.DjangoTemplates',
            'DIRS': [os.path.join(BASE_DIR, 'templates')]
            ,
            'APP_DIRS': True,
            'OPTIONS': {
                'context_processors': [
                    'django.template.context_processors.debug',
                    'django.template.context_processors.request',
                    'django.contrib.auth.context_processors.auth',
                    'django.contrib.messages.context_processors.messages',
                ],
            },
        },
    ]
    # 网关接口
    WSGI_APPLICATION = 'dg02.wsgi.application'
    
    
    # Database
    # https://docs.djangoproject.com/en/1.11/ref/settings/#databases
    # 数据库配置
    # DATABASES = {
    #     'default': {
    #         'ENGINE': 'django.db.backends.sqlite3',
    #         'NAME': os.path.join(BASE_DIR, 'db.sqlite3'),
    #     }
    # }
    
    DATABASES = {
        'default': {
            'ENGINE': 'django.db.backends.mysql',
            'NAME': 'dg2',
            'HOST': '127.0.0.1',
            'PORT': 3306,
            'USER': 'root',
            'PASSWORD': 'root'
        }
    }
    
    # Password validation
    # https://docs.djangoproject.com/en/1.11/ref/settings/#auth-password-validators
    # 密码认证
    AUTH_PASSWORD_VALIDATORS = [
        {
            'NAME': 'django.contrib.auth.password_validation.UserAttributeSimilarityValidator',
        },
        {
            'NAME': 'django.contrib.auth.password_validation.MinimumLengthValidator',
        },
        {
            'NAME': 'django.contrib.auth.password_validation.CommonPasswordValidator',
        },
        {
            'NAME': 'django.contrib.auth.password_validation.NumericPasswordValidator',
        },
    ]
    
    
    # Internationalization
    # https://docs.djangoproject.com/en/1.11/topics/i18n/
    # 国际化
    LANGUAGE_CODE = 'en-us'
    
    TIME_ZONE = 'UTC'
    
    USE_I18N = True
    
    USE_L10N = True
    
    USE_TZ = True
    
    
    # Static files (CSS, JavaScript, Images)
    # https://docs.djangoproject.com/en/1.11/howto/static-files/
    
    # 静态文件
    # STATIC_URL = '/test/'
    # 静态文件请求的根路由
    # STATIC_URL = '/static/'  # 可以代表n个文件夹
    # href="/static/"
    
    # STATICFILES_DIRS = [
    #     os.path.join(BASE_DIR, 'static'),  # 就是配置static对应检索的文件夹们
    #     os.path.join(BASE_DIR, 'static1'),
    # ]
    # href="/static/css/index.css"
    
    
    # 最终版本
    STATIC_URL = '/static/'
    STATICFILES_DIRS = [
        os.path.join(BASE_DIR, 'static')
    ]
    # href="/static/css/index.css"
    View Code

    四.Pycharm搭建项目

    1.选择有django环境的解释器创建项目

    2.选择项目目录(从项目目录开始,目录文件夹及子文件夹不要出现中文,保证电脑名字不为中文)

    3.配置默认模板语言,模板路径,app名

    4.启动

    五.生命周期

    1.浏览器发送请求

    2.wsgi服务器接收到请求,将请求解析交给Django

    3.Django中间件过滤请求信息,交给路由

    4.路由完成业务逻辑的分发,到指定app下views中指定的视图函数

    5.视图函数完成具体的业务逻辑,返回响应结果

    6.将处理结果通过服务器返回给浏览器

    六.项目响应请求

    响应:

    from django.shortcuts import render, redirect, HttpResponse
    
    # Create your views here.
    
    
    def index(request):
        
        return  HttpResponse('响应了')

    模板页面:

    from django.shortcuts import render, redirect, HttpResponse
    
    # Create your views here.
    
    
    def index(request):
    
        return render(request, 'index.html')

    重定向:

    from django.shortcuts import render, redirect, HttpResponse
    
    # Create your views here.
    
    
    def index(request):
    
        return redirect('/重定向的路由')

    七.静态文件加载

    静态文件的根路由 => 规定了加载静态文件的起点

    #1. 项目目录下 settings.py文件
    
    STATIC_URL = '/static'  # static指的是路由
    
    # 下方规定静态文件可以放入的文件夹
    STATICFILES_DIRS = [
        os.path.join(BASE_DIR, 'static')  # static指的才是文件夹
    ]
    
    
    # 直接导致模板页面导入静态文件起点:
    # <link rel="stylesheet" href="/static/css/index.css">
    
    #2.在项目根目录下创建static文件夹
    #3.静态文件就放在static根目录或子目录下
    #4.获取静态文件:/static/目标文件(可以包含static子文件夹路径)

    八.请求及数据

    '''
    请求路径:
    1.空着:默认向当前路径发送请求
    2.http://127.0.0.1:8801/testAction/:向testAction路径发送请求
    3./testAction/: 向testAction路径发送请求(推荐)
    
    在视图函数中
    请求方式:request.method
    GET请求获取数据:request.GET.get('key', None)  # 当key不存在,用None替换
    POST请求获取数据:request.POST.get('key', None)  # 当key不存在,用None替换
    '''

    九.配置Mysql完成数据迁移

    '''
    1.在settings.py配置Mysql数据库信息
    DATABASES = {
        'default': {
            'ENGINE': 'django.db.backends.mysql',
            'NAME': 'dg2',
            'HOST': '127.0.0.1',
            'PORT': 3306,
            'USER': 'root',
            'PASSWORD': 'root'
        }
    }
    
    2.在项目或应用的init文件中修改连接数据库的模块pymysql
    import pymysql
    pymysql.install_as_MySQLdb()
    
    3.在项目目录下,执行(生成迁移数据,没有映射到数据库):python3 manage.py makemigrations
    
    4.将迁移数据映射到数据库:python3 manage.py migrate
    
    '''

    十.简单的增删改查

    '''
    # 增
    User.objects.create(usr='abc'.pwd='123')  # 第一种方式
    user=User(usr='abc',pwd='123')
    user.save()  # 第二种方式
    
    # 删
    User.objects.filter(id=1).delete()
    
    # 改
    User.objects.filter(pwd='123').update(pwd='11')
    
    # 查
    User.objects.filter(pwd='11').all()
    User.objects.filter(pwd='11').first()
    
    '''
  • 相关阅读:
    Shiro 学习笔记(Realm)
    Shiro 学习笔记(Authentication)
    Shiro 学习笔记(基本结构)
    POI 示例(导入,导出)
    SpringBoot 整合POI
    解决使用drf-haystack报错ImportError: cannot import name get_count
    python实现冒泡排序和插入排序
    九大排序算法总结(转)
    Djaong 数据库查询
    django session 和cookie的设置,获取和删除
  • 原文地址:https://www.cnblogs.com/wangke0917/p/10439470.html
Copyright © 2011-2022 走看看