初识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()

'''

 

posted @ 2019-02-26 19:27  起个名字、真难啊  阅读(192)  评论(0编辑  收藏  举报