目录


1.django的安装

cmd窗口下载:
    不指定版本安装最新:pip3 install django
    指定安装1.11.11版本:pip3 install django==1.11.11

验证安装是否成功:django-admin

2.django基本操作(vscode)

        创建项目,启动/关闭项目,创建并配置app,配置文件操作

1.创建django项目
    (1)cmd切换到需要创建的目录下
    (2)创建命令:django-admin startproject mydjango(项目名)
    (3)创建完成的文件
        mydjango(文件夹)
            manage.py
            mydjango文件夹
                __init__.py
                settings.py     配置文件
                urls.py         路由与视图函数对应关系(路由层)
                wsgi.py         wsgiref模块



2.启动django项目
    (1)一定要先切换到项目目录下
    (2)cmd启动命令:python manage.py runserver
        runserver默认ip 端口为127.0.0.1:8000
    (3)启动失败:点击最后一个报错信息去源码中把逗号删掉
        如:最后一个报错:
            File "/Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/site-packages/django/contrib/admin/widgets.py", line 151
            '%s=%s' % (k, v) for k, v in params.items(),
        意思是:把该文件第151行的"'%s=%s' % (k, v) for k, v in params.items(),"代码最后一个逗号去掉



3.关闭django项目
    cmd命令:CTRL+C



4.创建应用即app
    cmd命令:python manage.py startapp app01
    创建完成文件
        -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			    视图函数(视图层)



6.把app01加进项目settings.py配置文件中的INSTALLED_APPS项,相当于注册应用才能用
    INSTALLED_APPS = [
        'django.contrib.admin',
        'django.contrib.auth',
        'django.contrib.contenttypes',
        'django.contrib.sessions',
        'django.contrib.messages',
        'django.contrib.staticfiles',
        'app01.apps.App01Config',   # 全写
        'app01'                     # 简写
        ]
    不加进配置文件,app功能不识别出来



5.配置文件:
  当客户端访问,服务端返回对应网页时,通常用templates文件夹存放HTML文件
    (1)cmd命令创建不会自动创建templates文件夹
        需要手动创建,并且把路径拼接到---settings.py配置文件
        即其中原配置信息:
            TEMPLATES = [
                {
                    'BACKEND': 'django.template.backends.django.DjangoTemplates',
                    'DIRS': [],
                    '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',
                            ],
                        },
                    },
            ]
            的'DIRS': [],中加templatew拼接路径:os.path.join(BASE_DIR, 'templates')
    (2)即手动创建要
        创建文件夹templates
        拼接路径'DIRS': [os.path.join(BASE_DIR, 'templates')]

3.静态文件配置

1.引入
    通常将html文件默认都放在templates文件夹下
    而将网站所使用的静态文件默认都放在static文件夹下
    静态文件:
	    能够直接调用使用的文件
        比如:
		    网站写好的js文件
		    网站写好的css文件
		    网站用到的图片文件
		    第三方前端框架
    django默认是不会自动帮你创建static文件夹,static文件夹内也应该细分各类文件


2.常识:(1)在浏览器中输入url能够看到对应的资源,是因为后端提前开设了该资源的接口
           如果访问不到资源 说明后端没有开设该资源的借口

        (2)你在写django项目的时候,可能会出现后端代码修改了但是前端页面没有变化的情况
	        a.你在同一个端口开了好几个django项目,一直在跑的其实是第一个django项目
	        b.浏览器缓存的问题,到浏览器配置更改


3.静态文件配置
    在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'),
        ]

    """
        STATIC_URL = '/static/'              # 类似于访问静态文件的令牌
        如果你想要访问静态文件 你就必须以static开头
        如:/static/bootstrap-3.3.7-dist/js/bootstrap.min.js
            /static/令牌
            取列表里面从上往下依次查找bootstrap-3.3.7-dist/js/bootstrap.min.js文件
            都没有才会报错
    """



4.静态文件动态解析
    由于令牌更改,那访问文件的前缀令牌也要更改,会很麻烦
    让HTML文件动态解释识别令牌,进行更改
    如:
      {% load static %}
      <link rel="stylesheet" href="{% static 'bootstrap-3.3.7-dist/css/bootstrap.min.css' %}">
      <script src="{% static 'bootstrap-3.3.7-dist/js/bootstrap.min.js' %}"></script>

4.django三板斧

在views.py文件中将数据反馈三种
from django.shortcuts import HttpResponse,render,redirect

return HttpResponse('字符串')        # 1.直接返回字符串
  
return render(request,'login.html')  # 2.返回html文件
def ab_render(request):                          # request结合行数:注意图函数必须要接受一个形参request
    user_dict = {'username':'jason','age':18}    # 数据传值方式1:更加的精确 节省资源
    return render(request,'01 ab_render.html',{'data':user_dict,'date':123}) 
                                                 # 数据传值方式2:当你要传的数据特别多的时候
                                                 # 前端拿数据data:{{data}}
    return render(request,'01 ab_render.html',locals())
                                        # 数据传值方式3:locals会将所在的名称空间中所有的名字全部传递给html页面
                                        # 前端拿数据data:{{data}}

return redirect(url)                 # 3.重定项,固定返回的页面