Django小总结

初始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:enlevdjangoLibsite-packagesdjangodbackendsmysql
修改了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:需要引入重定向
原文地址:https://www.cnblogs.com/ldsice/p/10948553.html