day53 django的三板斧与配置模块

昨日内容回顾

web应用程序
主要是因为接下来学习的Django框架主要就是用来开发web应用的
​
web应用它是一款B/S架构的软件,只需要一个浏览器作为我们的客户端,我们自己写个服务端就行了
# 它的优点
1. 它只需要一个浏览器即可,无需安装其他的软件
2. 一定程度上节省了内存空间
3. 它的跨平台性(Windows、macOS、Linux等)
​
# 它的缺点:
"""它的依赖性比较强,依赖服务端,一旦服务端出现宕机的情况,客户端就会立马首影响"""
​
# 什么是框架
在别人写好的代码基础上,在固定的位置去写代码.
bin
core
conf
​
## 面试经常问的就是框架的源码
你看过Django的哪些源码? 请举例说明。
手写web框架
目的不是让你掌握其中的代码重点在于思路的理解,逻辑的理解等
​
## 代码就省略
"""根据功能的不同,进行了目录的划分"""
views.py:以后写核心的业务逻辑就在这个里面写,写了一堆的函数
urls.py:写后缀(路由)与视图函数的对应关系,也称为是路由文件
template:存放HTML文件(在Django中html文件我们称为是模板文件------>模板语法)
入口文件: 书写socket部分,处理HTTP格式的数据,做数据的切分等操作
​
# 自己写的socket部分就比较麻烦
wsgiref模块
它解决的事情:
    1. 帮我们写了socket部分,我们以后就不用在写了
    2. 帮我们处理了HTTP格式的数据,最终处理成一个大的字典env, 里面也包含了请求的各个数据
    3. 它能够处理一些高并发问题,它的并发量不是很高,上线要把wsgiref换成uwsgi服务器(并发量高)
​
from wsgiref.simple import make_server
def run(env, response):
    pass
​
​
server=make_server(host, port, app=run)
server.server_forever() # 把服务端起起来
Django框架的学习
它是Python中一个核心框架,当然它也有别的框架
​
# 版本问题:
Django1.x  Django2.x  Django3.x  Django4.x(忽略)
​
# 安装
pip install django==2.1.1
​
# 创建项目
1. 命令行
    django-admin startpeoject 项目名称
    
2. pycharm创建
    File
        New Project
            django
                。。。
                
# 如何启动项目
1. 命令行启动
python manage.py runserver
python manage.py runserver 127.0.0.1 8001
python manage.py runserver  8002
2. pycharm启动
​
## 得到一个欢迎页
创建应用
"""应用就是一个独立的功能模块,一定别忘了注册应用,在配置文件中注册"""
命令行创建:
    python3 manage.py startapp 应用名
    # 应用名要见名知意: app01 app02 app03  user order address
# 框架中至少要有一个应用
"""注册应用!!!!!!!"""

今日内容概要

以登录功能为例,从大体上来了解django的知识点,后续还会详细的讲解每一部分的知识点
  • 三板斧的使用

  • 全局配置文件

  • 静态文件的配置

  • request对象的几个方法

  • pycharm链接数据库MySQL

  • Django链接数据库MySQL

  • ORM的使用

  • ORM的增删改查

今日内容详细

三板斧的使用
三个方法:
HttpResponse 
render
redirect
​
def index(request):
    print('request')
    # return HttpResponse("request") # 它返回的是字符串
    # return render(request, 'index.html') # 加载HTML页面的
    # return redirect('http://www.baidu.com') # 加载HTML页面的
    return redirect('/home/') # 重定向的
全局配置文件
LANGUAGE_CODE = 'zh-hans'
​
TIME_ZONE = 'Asia/Shanghai'
​
USE_I18N = True
​
USE_L10N = True
​
USE_TZ = False
​
DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.sqlite3',
        'NAME': os.path.join(BASE_DIR, 'db.sqlite3'),
    }
}
​
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',
]
​
INSTALLED_APPS = [
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',
    'app01.apps.App01Config', # 这是全写
]
静态文件的配置
静态文件: 
    类似于HTML文件
    类似于CSS文件
    类似于js文件
    图片
    第三方的前端框架(jQuery、bootstrap)
    ...
    # 直接拿来就使用的都是静态文件的
    
# 静态文件存在Django框架的哪个位置?
"""
    我们一般把静态文件放在框架下的static文件夹,但是,默认情况下没有这个文件夹,因此,需要我们手动创建出来这个文件夹static
    静态的html一般放在templaes文件夹下面
"""
​
# 我们一般还会在static文件夹下进一步的划分目录
css
js
img
...
/index
/home
​
"""我们访问不到一个地址,是因为在Django里面没有开设这样一个地址,Django帮你加了,你只需要按照我的规则添加即可"""
http://127.0.0.1:8000/static/bootstrap-3.4.1-dist/css/bootstrap.min.css
​
{%  %}  # 一般写跟逻辑相关的
{{  }}  # 跟变量相关的
    
## 动态解析
{% load static %}
​



​
​
"""这个配置是访问静态文件的令牌"""
STATIC_URL = '/dasdasdasdas/'
​
"""其实就是static文件夹的路径"""
STATICFILES_DIRS = [
    os.path.join(BASE_DIR, 'static'),
    os.path.join(BASE_DIR, 'static1'),
    os.path.join(BASE_DIR, 'static2')
]
request对象的方法
action: 1. 不写,朝当前地址提交    2. 全写    3. 只写后缀     # post提交表单,前期先把下面的代码注释掉 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', ] ​ print(request.GET) print(request.GET.get('a')) print(request.GET.get('b')) print(request.GET.get('c')) print(request.GET.getlist('c')) ​ # print(request.POST) # 获取以post请求方式提交的表单数据 # print(request.POST.get('username')) # kevin 获取以post请求方式提交的表单数据 # print(request.POST.get('password')) # 123 获取以post请求方式提交的表单数据 """get获取默认拿到的是最后一个元素值""" # print(request.POST.get('hobby')) # 3 获取以post请求方式提交的表单数据 # ['a', 'b', 'c'] username = request.POST.get('username') password = request.POST.get('password') print(request.POST.getlist('hobby')) # 3 获取以post请求方式提交的表单数据 ​ request.method == 'POST':
pycharm链接数据库
django链接数据库
配置完链接数据的代码之后,Django默认启动不起来了,原因是:内部使用的链接模块用的是mysqldb
我们不使用这个模块,我们使用pymysql模块
​
# 如何更换pymysql
在任意的__init__.py文件中添加一下代码
import pymysql
pymysql.install_as_MySQLdb()
​
# 后续还有一个模块:mysqlclient,这个模块不需要加任何的代码
这个模块一般装不上,不容易装上,很容易报错
orm介绍
orm: 对象映射模型
在Django中操作数据库就不用在写原生的SQL语句,而是使用面向对象的语法和一些方法来操作数据库
缺点:代码的封装程度太高,导致的问题:执行效率下降了,目前可以忽略,需要自己写原生SQL语句
​
类名                  >>>             表名
对象                  >>>             一条记录
属性                  >>>             一个字段
​
## 我们的这些orm在哪里书写呢?
models.py这个文件就是跟数据库打交道的
​
## 类名写好之后,一定别忘了做数据库迁移命令
***************************************************************************************
python38 manage.py makemigrations  # 生成迁移的记录(类似以是一个小本本)
python38 manage.py migrate        # 这句话才是真正的操作了数据库,然后生成表
"""当你修改了跟数据量相关的代码之后,都要执行这两句话"""
***************************************************************************************

你可能感兴趣的:(django,python,后端)