Bootstrap样例: https://v3.bootcss.com/
Fontawesome 图标查找: http://fontawesome.dashgame.com/
Django采用MVC软件设计模式,模型M,试图V和控制器C
可以在腾讯云Cloud Studio中运行Django
安装Django -> pip install Django ->最新版的,指定版本用e.g. pip install django==2.1.4 (支持python3.7)
cmd输入python进入python框,import django说明安装成功,django.ger_version()获取Django版本号
创建django项目:
方式一:命令行创建
cmd输入django-admin
cmd用cd进入你想产生django项目的文件
cmd输入django-admin startproject <项目名称>
方式二:PyCharm创建
打开PyCharm
File->New project->Django(填项目路径,勾选python.exe文件)->create->注意:要选择open in new window(另外打开的PyCharm窗口,在新窗口中开发)
文件目录解析:
manage.py:所有管理django项目的启动操作等从此开始
mysite文件下:setting.py配置,urls.py所有url管理,wsgi.py网络通信socket
新建Django项目所配置:
运行Django:
方式一:
cmd进入Django项目文件下
输入python manage.py runserver
默认:http://127.0.0.1:8000/
不用重复启动,PyCharm保存文件后cmd自动更新
方式二:
PyCharm选中整个项目,点绿三角运行
setting.py中的BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))代表每次寻址的根目录(可修改)
编写的代码都是要在服务器(Linux)上运行,所以编写的时候要确保Linux上兼容
'DIRS': [os.path.join(BASE_DIR, 'templates')] -->告诉Django我用到的html文件都去templates这个目录找
e.g.京东为例,浏览器部分不用编码,只需要编写服务器代码。完整的socket连接过程:
HTTP服务器响应给客户端格式:
动态网页本值上都是字符串的替换
字符串替换在服务器端,将替换完的html文件返回传输给浏览器解析
wsgiref模块:负责与浏览器socket通信
jinja2模块:负责从HTML读取出内容,并且完成字符串的替换
PyCharm修改默认Django端口:
Django中/static/解析:
App文件解析:
import pymysql
# 告诉Django用pymysql来代替默认的MySQLdb
pymysql.install_as_MySQLdb()
views.py放函数的文件;apps.py放与App相关的配置项;tests.py来写测试的;models.py创建类(数据表),ORM只能写在这个文件里,写到别的文简历Django找不到
在创建完App后一定要一定要告诉Django自己新建了一个App(在PyCharm创建新Django项目时可以随手创建一个App)
setting.py文件中的INSTALLED_APPS告诉Django有哪一些App
ORM:python自动生成SQL;
ORM对应关系
setting.py中的DATABASES为数据库相关的配置
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.mysql', # 连接数据库类型
# 连接数据库的地址
'HOST': '127.0.0.1',
# 端口
'PORT': 3306,
# 数据库名称
'NAME': 'test',
# 用户
'USER': 'root',
# 密码
'PASSWORD': '123',
}
}
MySQLDB不支持python3;pymysql支持python3
若用python3,则用pymysql代替默认的mysqldb,在app中的__init__.py中加入
import pymysql
# 告诉Django用pymysql来代替默认的MySQLdb
pymysql.install_as_MySQLdb()
在app下面的models.py文件中定义一个类,这个类必须集成models.Model
class UserInfo(models.Model):
id = models.AutoField(primary_key=True) # 创建一个自增的主键字段
name = models.CharField(null=False, max_length=20) #创建一个varchar类型的不能为空的字段
mysql查看表结构命令:desc
python manage.py makemigrations相当于保存了PyCharm中代码的改动,保存到app/migrations中
而python manage.py migrate才相当于把改动翻译成SQL语句去数据库执行
若用ORM则要从始至终使用ORM,如果用mysql修改创建的话Django中的migrations不能记录,对应则会出现问题
Django使用详细步骤
1. 安装
1. Django版本 1.11.xx
2. 安装方式
1. 命令行 --> Python环境(双版本,pip的使用)
2. PyCharm安装
2. 创建Django项目
1. 创建方式
1. 命令行创建方式
1. cd到你要保存Django项目的目录
2. Django-admin startproject 项目名 --> 会在当前目录创建Django项目
2. PyCharm创建方式
1. File --> new project --> ...
2. 创建完之后一定要选在新窗口打开!!!
3. 配置Django项目
1. settings.py文件
1. templates文件夹的位置
2. 静态文件
1. STATIC_URL --> 静态文件夹的别名(在HTML文件中用的)
2. STATICFILES_DIRS --> 静态文件夹的真正路径
3. 注释掉 csrf 相关的中间件
4. Django项目连接的数据库信息
4. Django WEB请求流程(简版)
1. 启动Django项目,等待用户连接
2. 浏览器在地址栏输入URL,来连接我的Django项目
3. 在urls.py中 找 路径和函数的 对应关系
4. 执行对应的函数
5. 返回响应
5. views.py
1. 专门用来定义处理请求的函数
1. 基本必备三件套
from django.shortcuts import HttpResponse, render, redirect
1. HttpResponse("要返回的内容") --> 通常用于直接返回数据
2. render(request, "html文件", {"k1": v1}) --> 返回一个HTML文件或者打开文件进行字符串替换
3. redirect("URL") --> 告诉用户的浏览器去访问其他的URL
2. request相关
1. request.method --> 查看请求的方法
2. request.POST --> 获取POST请求的数据
6. ORM使用
1. 什么是ORM?
是一种编程的方法论(模型), 和语言无关.(其他的语言也有类似的实现.)
2. ORM的本质:
类 ---> 数据表
对象 ---> 数据行
属性 ---> 字段
按照规定的语法写,自动翻译成对应的SQL语句.
3. ORM的功能:
ORM操作数据表
ORM操作数据行
4. Django里ORM的使用:
1. 手动创建数据库
2. 在settings.py里面,配置数据库的连接信息
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.mysql',
'NAME': 'day62',
'HOST': '127.0.0.1',
'PORT': 3306,
'USER': 'root',
'PASSWORD': '123456',
}
}
3. 在项目/__init__.py告诉Django用pymysql模块代替MySQLdb来连接MySQL数据库
import pymysql
pymysql.install_as_MySQLdb()
4. 在app/models.py里面定义类
# 出版社
class Publisher(models.Model):
id = models.AutoField(primary_key=True) # 自增的ID主键
# 创建一个varchar(64)的唯一的不为空的字段
name = models.CharField(max_length=64, null=False, unique=True)
5. 执行两个命令
1. python manage.py makemigrations --> 把models.py里面的更改记录到migrations中
2. python manage.py migrate --> 把更改翻译成SQL语句,去数据库执行
GET与POST请求:
1. GET请求和POST请求
都属于HTTP协议规定的请求方法
2. 什么时候用GET请求?
1. 浏览器想要得到一个HTML页面的时候
2. 搜索引擎查询关键字的时候 www.sogo.com/web/?query=迪丽热巴
3. 什么时候用POST?
1. 向后端提交数据
1. 大段的数据
2. 包含隐私的数据
3. 上传文件
4. 实际中GET和POST的应用场景
1. GET:
1. 直接在浏览器地址栏输入URL访问网站
2. a标签
2. POST:
1. 登录注册
2. 修改(新增)大段的数据
3. 上传文件
ORM操作方式二:
点Tools中的run manage.py Task...
接着在底下直接输入makemigrations与migrate就可以
ORM外键操作注意事项:
外键会自动给加_id
PyCharm格式化代码:Code --> Reformat Code 将粘贴过来的代码缩进匹配。
ORM多对多表结构:
模板语言:最后一个循环{% forloop.last %}
多对多查询:
request.POST.getlist("books") #getlist获取一个列表
多对多相关联表的添加:
修改时候:_obj.save() 保存修改