django简介


一、安装django

#学习使用django1.11.11
pip3 install django==1.11.11

"""
django
	特点:大而全 自带的功能特别特别特别的多 类似于航空母舰
	不足之处:
		有时候过于笨重

flask
	特点:小而精  自带的功能特别特别特别的少 类似于游骑兵
	第三方的模块特别特别特别的多,如果将flask第三方的模块加起来完全可以盖过django
	并且也越来越像django
	不足之处:
		比较依赖于第三方的开发者
		
tornado
	特点:异步非阻塞 支持高并发
		牛逼到甚至可以开发游戏服务器
	不足之处:
		暂时你不会
'''

二、创建一个django项目:

下面的命令创建了一个名为"mysite"的Django 项目:

django-admin startproject mysite

#目录
-mysite项目文件夹
├── mysite文件夹
  	---settings.py	    配置文件
    ---urls.py			路由与视图函数对应关系(路由层)
    ---wsgi.py			wsgiref模块(不考虑)
├── manage.py			django的入口文件
├── db.sqlite3			django自带的sqlite3数据库(小型数据库 功能不是很多还有bug)
├── app01文件夹
  	---admin.py			django后台管理
    ---apps.py			注册使用
    ---migrations文件夹		数据库迁移记录
    ---models.py		数据库相关的 模型类(orm)
  	---tests.py			测试文件
    ---views.py			视图函数(视图层)

三、运行Django项目:

"""
一定要先切换到项目目录下	cd /mysite
"""
	
python manage.py runserver 127.0.0.1:8000
    
Note:如果你的项目报错 你点击最后一个报错信息去源码中把逗号删掉

四、模板文件配置:

~]# vi mysite/settings.py
TEMPLATES = [
    {
        'BACKEND': 'django.template.backends.django.DjangoTemplates',
        'DIRS': [os.path.join(BASE_DIR, "template")],  # template文件夹位置
        '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',
            ],
        },
    },
]

六、创建应用

python manage.py startapp app01

#新建的应用需要去配置文件注册
INSTALLED_APPS = [
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',
    'app01.apps.App01Config',  # 全写
  	'app01',			 # 简写
]
# 创建出来的的应用第一步先去配置文件中注册 其他的先不要给我干
ps:你在用pycharm创建项目的时候 pycharm可以帮你创建一个app并且自动注册

七、Django基础必备三件套:

from django.shortcuts import HttpResponse, render, redirect

(1) HttpResponse

内部传入一个字符串参数,返回给浏览器。

例如:

def index(request):
    # 业务逻辑代码
    return HttpResponse("OK")

(2) render

除request参数外还接受一个待渲染的模板文件和一个保存具体数据的字典参数。

将数据填充进模板文件,最后把结果返回给浏览器。(类似于我们上面用到的jinja2)

例如:

def index(request):
    # 业务逻辑代码
    return render(request, "index.html", {"name": "alex", "hobby": ["烫头", "泡吧"]})

(3) redirect

接受一个URL参数,表示跳转到指定的URL。

例如:

def index(request):
    # 业务逻辑代码
    return redirect("/home/")

八、django静态文件配置

(1) 默认会在创建项目的目录下创建templates目录,存放html文件

(2) 我们将网站所使用的静态文件默认都放在static文件夹下,static文件夹下还会进一步划分js、css、img等。

静态文件:前端已经写好了的 能够直接调用使用的文件,网站写好的js文件,网站写好的css文件,网站用到的图片文件,第三方前端框架等

8.1 配置静态文件

(1)修改django项目的settings.py
...
STATIC_URL = '/static/'

STATICFILES_DIRS = [
    os.path.join(BASE_DIR,'static'),
    os.path.join(BASE_DIR,'static1'),
    os.path.join(BASE_DIR,'static2'),
]

(2) 静态文件动态解析
	#templates文件夹下html文件内按照如下格式调用
    {% load static %}
    
    

九、django链接数据库

(1) 修改settings.py
DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.mysql',
        'NAME': 'testdb1',
        'USER': 'root',
        'PASSWORD': '123456',
        'HOST':'127.0.0.1',
        'PORT':'7888',
        'CHARSET':'utf8',
    }
}

(2) 代码声明	
  django默认用的是mysqldb模块链接MySQL,但是该模块的兼容性不好 需要手动改为用pymysql链接
  # 在项目名下的init或者任意的应用名下的init文件中书写以下代码都可以
  import pymysql
  pymysql.install_as_MySQLdb()

十、django创建orm测试脚本

在进行一般操作时先配置一下参数,使得我们可以直接在Django页面中运行我们的orm测试脚本

~]# vi testdb.py
#可以从manange.py拷贝

import os
if __name__ == "__main__":
    os.environ.setdefault("DJANGO_SETTINGS_MODULE", "mysite.settings")
    import django
    django.setup()

十、django获取url的参数

# 获取url后面携带的参数  http://127.0.0.1:8000/login/?username=jason&password=123
# print(request.GET)  # 获取用户提交的get请求数据
#