1.Django的命令
1. 安装Django
pip install django==1.11.16
pip install django==1.11.16 -i 源
2. 创建项目
django-admin startproject 项目名称
3. 启动项目
cd 项目目录下 有manage.py
python manage.py runserver # 127.0.0.1:8000
python manage.py runserver 80 # 127.0.0.1:80
python manage.py runserver 0.0.0.0:80 # 0.0.0.0:80
4. 创建APP
python manage.py startapp app名称
5. 数据库迁移的命令
1. python manage.py makemigrations # 记录models的变更记录
2. python manage.py migrate # 把变更记录同步到数据库中
2.Django的settings配置
1. 静态文件
STATIC_URL = '/static/' # 别名
STATICFILES_DIRS = [
os.path.join(BASE_DIR,'static'),
os.path.join(BASE_DIR,'static1'),
]
1. 数据库
ENGINE: mysql
NAME: 数据库名字
USER: 用户名
PASSWORD: 密码 ‘’
HOST: IP地址 127.0.0.1
PORT: 3306
1. 注释CSRF的中间件
可以提交POST请求
1. TEMPLATES 模板文件
DIRS [os.path.join(BASE_DIR,'templates')]
1. INSTALLED_APPS =[
'app01' 或者 ‘app01.apps.App01Config’
3.get和post
1. get ——获取一个页面
浏览器地址栏中输入地址,回车
a标签
form表单默认发送get请求
携带参数:127.0.0.1:8000/edit_publisher/?pk=1
request.GET {}
1. post ——提交数据
form表单指定method=‘post’
request.POST
4.使用mysql数据库的流程
1. 创建一个mysql数据库
2. 在settings中配置:
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.mysql',
'NAME': 'bookmanager',
'HOST': '127.0.0.1',
'PORT': 3306,
'USER': 'root',
'PASSWORD': '',
}
}
3. 告诉Django使用pymysql模块连接mysql数据库
在与settings同级目录下__init__.py中写:
import pymysql
pymysql.install_as_MySQLdb()
4. 在app下的models中写类(继承models.Model)
class Publisher(models.Model): # app01_publisher
pid = models.AutoField(primary_key=True) # pid 主键
name = models.CharField(max_length=32, unique=True) # 出版社名称 varcahr(32)
5. 执行数据库迁移的命令
1. python manage.py makemigrations # 记录models的变更记录
2. python manage.py migrate # 把变更记录同步到数据库中
5.ORM操作
对应关系:
类 ——》 表
对象 ——》 数据行(记录)
属性 ——》 字段
from app01 import models
增加:
models.Publisher.objects.create(name='xx出版社')
查询:
models.Publisher.objects.get(name='xx出版社') ——》 一个对象
models.Publisher.objects.filter(name='xx出版社') ——》 一个对象列表
models.Publisher.objects.all() ——》 一个对象列表 所有数据的对象
删除:
models.Publisher.objects.get(name='xx出版社') .delete()
models.Publisher.objects.all() .delete()
修改:
obj=models.Publisher.objects.get(name='xx出版社')
obj.name = '新的名字' # 在内存中做修改
obj.save() # 保存在数据库中
6.模板的语法
render(request,'模板的文件名',{'new_name':'新华出版社','errr_msg':'数据已存在'})
1. 变量
{{ new_name }} ——》 新华出版社
1. for循环
{% for i in 可迭代的 %}
{{ forloop.counter }} 循环的次数
{{ i }}
{{ i.name }}
{{ i.pk}}
{% endfor %}
1.书籍的管理
书籍和出版社 多对一
书籍的表结构
id name
创建外键:
class Book(models.Model):
title = models.CharField(max_length=32, unique=True) # 书籍的名称
publisher = models.ForeignKey('Publisher', on_delete=models.CASCADE) # 关联了出版社
查询:
新增:
编辑:
模板语法: if判断