Django学习笔记:Bootstrap/FontAwesome,项目配置与使用步骤(最后),HTTP响应,jinja2,App,ORM,GET与POST传输
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
不用重复启动,PyCharm保存文件后cmd自动更新
方式二:
PyCharm选中整个项目,点绿三角运行
setting.py中的BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))代表每次寻址的根目录(可修改)
编写的代码都是要在服务器(Linux)上运行,所以编写的时候要确保Linux上兼容
[code]'DIRS': [os.path.join(BASE_DIR, 'templates')] -->告诉Django我用到的html文件都去templates这个目录找
e.g.京东为例,浏览器部分不用编码,只需要编写服务器代码。完整的socket连接过程:
HTTP服务器响应给客户端格式:
动态网页本值上都是字符串的替换
字符串替换在服务器端,将替换完的html文件返回传输给浏览器解析
wsgiref模块:负责与浏览器socket通信
jinja2模块:负责从HTML读取出内容,并且完成字符串的替换
PyCharm修改默认Django端口:
Django中/static/解析:
App文件解析:
[code]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为数据库相关的配置
[code]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中加入
[code]import pymysql # 告诉Django用pymysql来代替默认的MySQLdb pymysql.install_as_MySQLdb()
在app下面的models.py文件中定义一个类,这个类必须集成models.Model
[code]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获取一个列表
多对多相关联表的添加:
<select multiple name="">中multiple可以指明多选
修改时候:_obj.save() 保存修改
- 学习笔记--post 相比get 有很多优点,为什么现在的HTTP通信中大多数请求还是使用get?
- Http学习之使用HttpURLConnection发送post和get请求(2)
- Django学习笔记1 启动及配置一个Django项目
- Http学习之使用HttpURLConnection发送post和get请求(1)
- IOS HTTP GET POST学习笔记
- react---学习笔记:使用create-react-app快速构建开发环境并创建项目
- 使用HttpURLConnection开发自动发送Get、Post请求并获取响应
- 学习笔记分享(1),Http协议中Post方式与Get方式的传参形式
- 廖雪峰教程之学习笔记_webapp实战项目_aiohttp.web.Application()的使用
- Http学习之使用HttpURLConnection发送post和get请求 .
- Nginx学习笔记(六):怎样使用HTTP配置(下)
- Http学习之使用HttpURLConnection发送post和get请求
- Http学习之使用HttpURLConnection发送post和get请求
- Http学习之使用HttpURLConnection发送post和get请求 android
- 【HttpClient学习与实战】1.使用httpClient实现get与post信息传输
- Androidx学习笔记(40)--- 使用异步HttpClient(android-async-http-master)做get提交
- django学习笔记二:一个项目多个App项目搭建
- Http学习之使用HttpURLConnection发送post和get请求
- Java基础知识强化之网络编程笔记18:Android网络通信之 使用HttpClient的Post / Get 方式读取网络数据(基于HTTP通信技术)
- REST = HTTP动词(GET POST PUT DELETE)操作 + 服务器暴露资源URI,最后返回状态码(充分利用HTTP自身的特征,而不仅仅是把HTTP当作传输协议。Rest协议是面向资源的,SOAP是面向服务的),表现形式可以是JSON XML BIN,举例很清楚