初始Git

git init 初始化本地仓库,会在根目录下创建一个.git文件夹
git log 查看提交日志
git status 查看日志
git add 文件名 添加到缓存区
git commit -m loginfo 将缓存区文件提交,loginfo 为说明
git config --global user.email yourname@example.com 创建一个邮箱
git config --global user.name 创建一个名字
git reset --hard 版本号 切换到某个版本号
git reset --hard HEAD^^^ 切换到上上上一个版本,不能使用其他符号返回
git reset --hard HEAD~10 切换到10个版本之前
git reflog 查看操作日志 查看历史所有版本号
NO commits yet 没有任何提交

Git分支命令

查看所有分支
git branch
创建分支dev1
git branch dev1
切换分支
git checkout dev1
切换到主分支
git checkout master
将dev1合并到master
首先切换到主分支:git checkout master
然后进行合并:git merge dev1
删除dev1
git branch -d dev1
创建并切换分支dev2
git checkout -b dev2
备注:合并和删除可以在同一行写多个分支

1.为什么要使用虚拟环境?

因为在一个电脑上可能有多个项目,多个项目依赖于不同的Django版本,所以就需要一个依赖包管理的工具来处理多个互不干扰的开发的环境

2.如何安装配置虚拟环境

首先在命令行中输入pip install virtualenv
再输入pip install virtualenvwrapper-win
然后在环境变量中配置环境变量
我的电脑>属性>高级系统设置>高级>环境变量>系统变量>新建
WORKON_HOME 虚拟环境路径
安装虚拟环境mkvirtualenv 虚拟环境名字
eg:如果没有加虚拟环境名字会报错

Django创建项目

远程仓库地址:https://github.com/ice-a/homework.git
在E盘创建一个文件夹命名为homework
使用git clone https://github.com/ice-a/homework.git
命令将远程仓库克隆到本地
在.git同级目录运行cmd,此时如下图
使用django-admin startproject demo1创建django项目,创建成功如下图

Django创建应用

打开pycharm在terminal中输入命令
Python manage.py startapp booktest

如何使用Pycharm使用指定虚拟环境打开上述项目

File=》settings=》Project=》Project Interpreter=》
File>>setttins> project django> project Interpreter
添加一个system interpreter
选择解释器

在项目应用的models中创建数据库的类

1.//创建book表
class book(models.Model):
title=models.CharField(max_length=30) //创建book的第一个字段title
pub_date=models.DateTimeField(auto_now_add=True) //创建添加日期
//创建hero表
class hero(models.Model):
name=models.CharField(max_length=30) //创建hero表的name
gender=models.BooleanField(True) //设置gender的bool默认值为True
skill=models.CharField(max_length=30,null=True) //设置hero表的skill
wj=models.ForeignKey(book,on_delete=models.CASCADE) //设置外键
2.在项目demo1中的settings找到installed_apps在尾部加入项目应用名字(INSTALLED_APPS)
3.在terminal中输入python manage.py makemigrations
再次输入会显示No changes detected
4.在terminal中输入python manage.py migrate
再次输入会显示Running migrations: No migrations to apply.
5.生成的db.splites3在navitecat打开数据库
使用shell测试django数据
在manage.py文件同级打开terminal
输入from booktest.models import book,hero导入book类和hero类
创建b1,b2,h1,h2
from booktest.models import book,hero
b1=book()
b1.title='茅山道士'
b1.pub_data='2001-12-12 11:11:11'
b1.save()
b2=book()
b2.title='中国队长'
b2.pub_data='2020-12-12 12:12:12'
b2.save()
h1=hero()
h1.name='美猴王'
h1.gender=False
h1.skill='七十二变'
h1.wj=b1
h1.save()
h2=hero()
h2.name='李云龙'
h2.gender=False
h2.skill='我的意大利炮呢'
h2.wj=b1
h2.save()

查询

book.objects.all()
<QuerySet [<book: 复仇者联盟>, <book: 中国队长>, <book: 天龙八部>, <book: 茅山道士>, <book: 中国队长>]>

插入

构造对象.save()

修改

构造对象.name=新的值
构造对象.save()

删除

构造对象.delete()
b1.delete()
返回结果(3, {'booktest.hero': 2, 'booktest.book': 1})

MVC框架是什么?

	MVC框架的核心思想是:解耦
MVC框架是降低各功能模块之间的耦合性,方便变更,更容易重构代码,最大程 度上实现代码的重用
数据流
1.客户端向控制器发出请求
2.控制器连接数据模型
3.数据模型访问数据库
4.数据库将数据返回给数据模型
5.数据模型将数据库返回的数据发送给控制器
6.控制器连接到视图,便于用户查看
7.视图将数据处理成用户可识别的返回给控制器
8.控制器返回给用户视图处理过的数据
每一部分的工作
M表示model 主要用于对数据库的封装
V便是view 主要用于向用户展示结果
C表示controller 是核心,主要用于处理请求,获取数据,返回结果

MVT框架是什么?

MVT框架主要用于Django
数据流
1.客户端向view发送请求
2.View将数据发送给模型
3.模型向数据库请求数据
4.数据库返回给模型数据
5.模型将数据库返回的数据发送给视图
6.视图将模型返回的数据发送给模板
7.模板对数据进行处理,处理结束后将数据返回给视图
8.视图最后将处理的数据返回给客户端
每一部分的工作
M表示model 负责与数据库的交互
V表示View 是MVT的核心,负责接受请求,获取数据,返回结果
T表示template 负责呈现内容到浏览器

如果我在Django中想使用mysql该怎么配置

源代码路径:E:\enlev\django\Lib\site-packages\django\db\backends\mysql
修改了base.py和operations.py出现的第一个问题
django.core.exceptions.ImproperlyConfigured: Error loading MySQLdb module.Did you install mysqlclient?
解决思想:你有没有装mysql客户端
解决:pip install pymysql
在__init__添加了
import pymysql
pymysql.pymysql.install_as_MySQLdb()
出现的第二个问题:
django.db.utils.InternalError: (1049, "Unknown database 'djangotest'")
解决思想:不知道数据库djangotest
解决:连接到MySQL创建了一个数据库
出现的第三个问题:
django.core.exceptions.ImproperlyConfigured: mysqlclient 1.3.13 or newer is required; you have 0.9.3.
解决思想:在网上翻阅教程
解决:应该是版本问题,修改了base的35和36行,修改为37和38行
if version < (1, 3, 3):
raise ImproperlyConfigured("mysqlclient 1.3.3 or newer is required; you have %s" % Database.__version__)
出现的第四个问题
AttributeError: 'str' object has no attribute 'decode'
解决思想:在查看源代码中注释了operations.py这个文件里边145-147行
解决:解决之后可以运行
收获:多看看python源代码

路由和接口的理解

a) 项目路由
项目路由是创建项目的文件夹下的urls.py文件,一般用于整个项目工程,里边的应用路由建议配置在应用项目
b) 应用路由
在应用文件夹的根目录创建一个py文件,用于存放整个应用的应用路由,一般建议命名为urls.py,不建议在项目路由中配置应用路由信息
c) 视图函数
在django中,视图对WEB请求进行回应接收reqeust对象作为第一个参数,包含了请求的信息,视图其实就是一个Python函数,被定义在views.py
d) 路由传参
视图函数传参需要通过正则分组实现,每一个分组对应一个参数
如url(r'^detail/(\d+)$',views.detail)路由对应的视图函数detail就必须具备一个参数

模板如何使用

a)加载模板流程
1.加载模板
temp = loader.get_template('mall/list.html')
2.构造上下文
context={"allbrand":allbrand}
3.渲染模板
result = temp.render(context)
b)如何给模板传递参数
在view视图中通过创建视图函数来给模板传递参数
c)在模板中如何编写页面跳转
<p><a href="/mall/deatil/">详情页</a></p>

新建工程步骤

1.创建项目
2.创建应用
3.创建模型(在选择下拉列表容易出错,建议使用字符串)
4.在admin中注册模型
5.数据迁移
6.生成数据库
7.创建超级用户
8.运行文件
9.在浏览器中打开后台进行添加数据
10.添加数据结果
11.创建视图,创建模板文件
12.配置项目路由
13.配置应用路由
14.配置模板
15.配置主页
16.配置list列表页
17.配置商品详情页
18.运行mall应用
19.首页效果
20.列表页
21.详情页

视图函数如何传递多个参数

视图函数想要传递多个参数只需要在urls路由表时给url后面第一个参数正则表达式后面多写几个/第一个参数/第二个参数/第三个参数/  完成这个配置需要注意的是 在视图的def函数中需要些响应的形式参数进行接收

如何使用模板注释

想要在模板中使用注释 需要写上
{# 需要注释的内容 #}

如何解除模板硬编码

需要在主目录的urls目录中写入
然后到应用目录的 urls中 写入
在应用目录下的urls的路由中写入name属性
然后在模板中去除url的硬编码

模板中如何使用静态资源

首先先去 主项目的setting文件中配置一个 文件目录
然后在根目录同级 创建一个 static文件夹 并创建几个子文件夹
然后在css里面写入一个样式
然后可以在模板中引入使用

如何使用Bootstrap添加轮播图

先BOOTSTRP找到 三个CDN
第一个是 BOOTSTRP的CSS样式 连接
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/bootstrap@3.3.7/dist/css/bootstrap.min.css" integrity="sha384-BVYiiSIFeK1dGmJRAkycuHAHRg32OmUcww7on3RYdg4Va+PmSTsz/K68vbdEjh4u" crossorigin="anonymous">
第二个是 BOOTSTRP的jQuery样式 连接
<script src="https://cdn.jsdelivr.net/npm/jquery@1.12.4/dist/jquery.min.js"></script>
第三个是 BOOTSTRP的JavaScript样式 连接
<script src="https://cdn.jsdelivr.net/npm/bootstrap@3.3.7/dist/js/bootstrap.min.js" integrity="sha384-Tc5IQib027qvyjSMfHjOMaLkfuWVxZxUPnCJA7l2mCWNIpG9mGCD8wGNIcPD7Txa" crossorigin="anonymous"></script>
eg:注意导入顺序
导入完毕以后 去BOOTSTRP 官网找到 轮播插件代码
复制轮播代码设置轮播格式

重定向如何使用

重定向是 系统解决了客户端的请求后 又由系统自动触发了一个自己的请求,然后将系统请求出来的结果 返回给客户端
eg:需要引入重定向

Django小总结的更多相关文章

  1. Django+小程序技术打造微信小程序助手 ✌✌

    Django+小程序技术打造微信小程序助手 (一个人学习或许会很枯燥,但是寻找更多志同道合的朋友一起,学习将会变得更加有意义✌✌) 从零到一的完整项目开发实战过程,项目开发聚焦重要知识点,先原理后实战 ...

  2. Django+小程序技术打造微信小程序助手

    Django+小程序技术打造微信小程序助手   整个课程都看完了,当前这个课程的分享可以往下看,下面有某盘的链接,之前做java开发也做了一些年头,也分享下自己看这个视频的感受,同时也分享下自己的总结 ...

  3. Django 小实例S1 简易学生选课管理系统 12 CSS样式完善

    Django 小实例S1 简易学生选课管理系统 第12节--CSS样式完善 点击查看教程总目录 作者自我介绍:b站小UP主,时常直播编程+红警三,python1对1辅导老师. 课程模块的逻辑代码到这里 ...

  4. Django 小实例S1 简易学生选课管理系统 11 学生课程业务实现

    Django 小实例S1 简易学生选课管理系统 第11节--学生课程业务实现 点击查看教程总目录 作者自我介绍:b站小UP主,时常直播编程+红警三,python1对1辅导老师. 课程模块中,学生需要拥 ...

  5. Django 小实例S1 简易学生选课管理系统 10 老师课程业务实现

    Django 小实例S1 简易学生选课管理系统 第10节--老师课程业务实现 点击查看教程总目录 作者自我介绍:b站小UP主,时常直播编程+红警三,python1对1辅导老师. 课程模块中,老师将要使 ...

  6. Django 小实例S1 简易学生选课管理系统 9 创建课程模型(model)

    Django 小实例S1 简易学生选课管理系统 第9节--创建课程模型(model) 点击查看教程总目录 作者自我介绍:b站小UP主,时常直播编程+红警三,python1对1辅导老师. 对于课程模块, ...

  7. Django 小实例S1 简易学生选课管理系统 8 CSS样式优化

    Django 小实例S1 简易学生选课管理系统 第8节--CSS样式优化 点击查看教程总目录 作者自我介绍:b站小UP主,时常直播编程+红警三,python1对1辅导老师. 前面的几节下来,用户模块基 ...

  8. Django 小实例S1 简易学生选课管理系统 7 修改个人信息

    Django 小实例S1 简易学生选课管理系统 第7节--修改个人信息 点击查看教程总目录 作者自我介绍:b站小UP主,时常直播编程+红警三,python1对1辅导老师. 用户模块除了注册登录之外,还 ...

  9. Django 小实例S1 简易学生选课管理系统 6 实现登录逻辑

    Django 小实例S1 简易学生选课管理系统 第6节--实现登录逻辑 点击查看教程总目录 作者自我介绍:b站小UP主,时常直播编程+红警三,python1对1辅导老师. 1 业务逻辑 本教程第四节里 ...

  10. Django 小实例S1 简易学生选课管理系统 2 新建项目(project)并进行设置

    Django 小实例S1 简易学生选课管理系统 第2节--新建项目(project)并进行设置 点击查看教程总目录 作者自我介绍:b站小UP主,时常直播编程+红警三,python1对1辅导老师. 0 ...

随机推荐

  1. dp优化1——sgq(单调队列)

    该文是对dp的提高(并非是dp入门,dp入门者请先参考其他文章) 有时候dp的复杂度也有点大...会被卡. 这几次blog大多数会讲dp优化. 回归noip2017PJT4.(题目可以自己去百度).就 ...

  2. BZOJ 1047: [HAOI2007]理想的正方形 单调队列瞎搞

    题意很简明吧? 枚举的矩形下边界和右端点即右下角,来确定矩形位置: 每一个纵列开一个单调队列,记录从 i-n+1 行到 i 行每列的最大值和最小值,矩形下边界向下推移的时候维护一下: 然后在记录的每一 ...

  3. BZOJ2595(状压dp)

    要点 设\(f[i][j][k]\)为经过点\((i,j)\)且包含点集\(k\)的最小代价,其中k是指景点集合的枚举. 考虑有两种情况:1.点\((i,j)\)作为关键点连接了两个子集时\(f[i] ...

  4. css中的各类问题

    1.水平垂直居中 一.水平居中 (1)行内元素解决方案 只需要把行内元素包裹在一个属性display为block的父层元素中,并且把父层元素添加如下属性即可: .parent { text-align ...

  5. 洛谷P4719 【模板】动态dp

    https://www.luogu.org/problemnew/show/P4719 大概就是一条链一条链的处理(“链”在这里指重链),对于每一条链,对于其上每一个点,先算出它自身和所有轻儿子的贡献 ...

  6. jQuery实现全选反选功能

    废话不说,直接上代码! <html> <head> <meta http-equiv="Content-Type" content="tex ...

  7. AtCoder Regular Contest 075 2017年6月4日 C、D、E题解

    http://arc075.contest.atcoder.jp/assignments 昨晚做的atcoder,今天写个简单题解. F题不会做,800point的,就跪了,要等zk大佬来做.zk能做 ...

  8. .md文件插图片,不建议使用绝对地址。

    一 主要有两种方法,一种绝对地址,一种相对地址. 而百度的话,全都是说绝对地址的. 但是,有很大的弊端啊 orz 二 先说绝对地址 ![image](https://github.com/AngelS ...

  9. 死磕 java原子类之终结篇(面试题)

    概览 原子操作是指不会被线程调度机制打断的操作,这种操作一旦开始,就一直运行到结束,中间不会有任何线程上下文切换. 原子操作可以是一个步骤,也可以是多个操作步骤,但是其顺序不可以被打乱,也不可以被切割 ...

  10. R17下maps新增参数的问题

    今天遇到一个奇怪的问题,我之前写的一个函数在我弟弟的机器上编译出错.代码如下: %%将list [k1,v1,k2,v2...]转换成map {k1=>v1,key2=>v2...} -s ...