文章目录
黑马就业班Django框架视频总结①
1. 环境
Django 项目Debug 环境配置
python manage.py runserver --settings=EMCRP.settings_local
PYTHONUNBUFFERED=1;DJANGO_SETTINGS_MODULE=haumea.settings_local
修改admin 密码
方法一 : 这个方法是用过shell命令方式对密码进行修改的,使用如下的命令:
// 进入pod中修改
k exec -it dev-podname-haumea-759697c57-95vwz /bin/bash
python manage.py shell
from django.contrib.auth.models import User
user =User.objects.get(username='admin')
user.set_password('new_password')
user.save()
方法二 : 在Terminal中执行:python manage.py changepassword your_name(其中“your_name”为你要修改密码的用户名),根据提示内容修改即可。
python manage.py changepassword
方法一有密码强度验证,方法二不会校验密码强度。
Django workon工作环境
1. 安装virtualenv
pip install virtualenv
2. 安装虚拟环境管理工具
pip install virtualenvwrapper
pip install virtualenvwrapper-win #windows环境下使用
3. 创建目录用来存放虚拟环境
mkdir $HOME/.virtualenvs
4. 在~/.bashrc中添加下面两行命令
export WORKON_HOME=$HOME/.vritualenvs
source /usr/local/bin/virtualenvwrapper.sh
5. 运行
source ~/.bashrc
6. 创建python虚拟环境
mkvirtualenv + [虚拟环境名称]
7. 进入虚拟环境
workon + [虚拟环境名称]
8. 退出虚拟环境
deactivate +[虚拟环境名称]
9.删除(慎用)先退回虚拟环境
rmvirtualenv + [虚拟环境名称]
10.创建python2版本开发
mkvirtualenv -p /usr/bin/python2.7 [虚拟环境名称]
11. 创建python3版本开发
mkvirtualenv -p /usr/bin/python3 [虚拟环境名称]
可能有的安装python3虚拟环境的报错:
Running virtualenv with interpreter /usr/bin/python3.6
Traceback (most recent call last):
File "/usr/local/lib/python2.7/dist-packages/virtualenv.py", line 20, in <module>
import distutils.spawn
ModuleNotFoundError: No module named 'distutils.spawn'
报错原因:
No module named distutils.spawn virtualenv python3
使用virtualenv指定python3时报错,错误为:
No module named ‘distutils.spawn’
解决办法:
安装python3-distutils
sudo apt-get install python3-distutils
-
virtualenv --no-site-packages test_django
cd test_django\Scripts activate // 使用激活 deactivate.bat 退出
-
安装依赖库
安装依赖:pip install -r requirements.txt -i https://pypi.tuna.tsinghua.edu.cn/simple
-
虚拟环境管理工具:virtualenvwrapper-win
安装:pip install virtualenvwrapper-win 说明:默认会将虚拟环境保存在C:\Users\用户名\Envs目录下 查看虚拟环境:lsvirtualenv 创建虚拟环境:mkvirtualenv 启动虚拟环境:workon 虚拟环境名 退出虚拟环境:deactivate.bat
2. django创建项目
2.1 虚拟环境目录下 创建项目与 应用
django-admin startproject test1
cd test
python manage.py startapp booktest
2.2 文件说明
- test1:
- booktest
2.3 启动文件
-
对应用进行注册
- -
启动文件
python manage.py runserver
2. ORM
2.1 模型类设计
from django.db import models
# Create your models here.
# 图书类
class BookInfo(models.Model):
'''图书模型类'''
btitle = models.CharField(max_length=20)
bpub_date = models.DateField()
2.2 生成与执行迁移文件
python manage.py makemigrations
python manage.py migrate
2.3 数据库设置
- 自带的小型数据库
- 数据库文件db.sqlite3
2.4 操作数据表
3. 后台管理
LANGUAGE_CODE = 'zh-hans' #使用中文
python manage.py createsuperuser
后台
model.py
from django.contrib import admin
from booktest.models import BookInfo, HeroInfo
# Register your models here.
# 自定义模型管理类
class BookInfoAdmin(admin.ModelAdmin):
'''图书模型管理类'''
list_display = ['id', 'btitle', 'bpub_date'] # 使后台数据按行显示
class HeroInfoAdmin(admin.ModelAdmin):
'''图书模型管理类'''
list_display = ['hname', 'hgender', 'hcomment', 'hbook'] # 使后台数据按行显示
# 注册模型类
admin.site.register(BookInfo, BookInfoAdmin)
admin.site.register(HeroInfo, HeroInfoAdmin)
外键关联表
4. 操作MYSQL数据库
设置
settings.py:
DATABASES = {
'default': {
# 'ENGINE': 'django.db.backends.sqlite3',
# 'NAME': os.path.join(BASE_DIR, 'db.sqlite3'),
'ENGINE': 'django.db.backends.mysql',
'NAME': 'bj18',
'USER': 'root',
'PASSWORD': '123456',
'HOST': 'localhost',
'PORT': 3306,
}
}
init.py
字段类型与选项
class PeopleInfo(models.Model):
name = models.CharField(max_length=20) #人物姓名
gender = models.BooleanField(default=True) #人物性别
description = models.CharField(max_length=20) #人物描述
isDelete = models.BooleanField(default=False) #逻辑删除
book = models.ForeignKey(BookInfo) # 外键约束,人物属于哪本书
pub_date = models.DateField(null=True) #日期
readcount = models.IntegerField(default=0) #阅读量
commentcount = models.IntegerField(default=0) #评论量
isDelete = models.BooleanField(default=False) #逻辑删除
# 元类信息 : 修改表名
class Meta:
db_table = 'peopleinfo'
class PeopleInfo(models.Model):
name = models.CharField(max_length=20) #人物姓名
gender = models.BooleanField(default=True) #人物性别
description = models.CharField(max_length=20) #人物描述
isDelete = models.BooleanField(default=False) #逻辑删除
book = models.ForeignKey(BookInfo) # 外键约束,人物属于哪本书
pub_date = models.DateField(null=True) #日期
readcount = models.IntegerField(default=0) #阅读量
commentcount = models.IntegerField(default=0) #评论量
isDelete = models.BooleanField(default=False) #逻辑删除
# 元类信息 : 修改表名
class Meta:
db_table = 'peopleinfo'
修改models
查询![
F对象 类属性之间比较
Q对象 条件之间比较
sum
查询集
5. 模型
from django.db import models
# Create your models here.
# 图书类
class BookInfo(models.Model):
'''图书模型类'''
btitle = models.CharField(max_length=20) #图书名称
bpub_date = models.DateField()# 出版日期
bread = models.IntegerField(default=0)# 阅读量
bcomment = models.IntegerField(default=0) #评论量
idDelete = models.BooleanField(default=False) #删除标记
# def __str__(self):
# # 返回书名
# return self.btitle
class HeroInfo(models.Model):
# 英雄姓名,不唯一,可以有重名的英雄
hname = models.CharField(max_length=50, unique=False)
# 英雄性别,默认False为男性,也可以设为Integer类型,0或者1
hgender = models.BooleanField(default=False)
isDelete = models.BooleanField(default=False)
# 英雄的描述
hcontent = models.CharField(max_length=500)
# 图书与英雄的关系为一对多的关系,所以属性定义在英雄的模型类中
hbook = models.ForeignKey('BookInfo', on_delete=models.CASCADE)
# def __str__(self):
# # 返回书名
# return self.hname
class NewType(models.Model):
type_name = models.CharField(max_length=20)
new_type = models.ManyToManyField('NewsInfo')
class NewsInfo(models.Model):
title = models.CharField(max_length=128) #新闻标题
pub_date = models.DateTimeField(auto_now_add=True) #发布时间
content = models.TextField() #信息内容
# 员工信息表 一对一
class EmployBasicInfo(models.Model):
name = models.CharField(max_length=20)
gender = models.BooleanField(default=False)
age =models.IntegerField()
employee_detail = models.OneToOneField('EmployeeDetailInfo')
# 员工详细信息表
class EmployeeDetailInfo(models.Model):
addr = models.CharField(max_length=256) #地址
#教育经历
employee_basic = models.OneToOneField('EmployBasicInfo')
1. 关联查询
2. 自关联
3. Manager
3.1 自定义的Manager对象
- 定义一个类查找与保存数据
3.2 继承Manager对象
- 保存数据
- self.model
总结
4. 元选项
- 指定表明