【框架结构及作用】
【开展项目】
生成一个app模块
#PyCharm命令行
PS D:项目路径> python ./manage.py startapp 模块名称(比如app01)
在运行、编写app部分之前 要将app部分注册进配置文件中 确保app已注册
编写URL和试图函数对应关系
编写视图函数
也可以用render返回html文件格式
- 启动项目:
# PyCharm命令行
PS 项目路径> python .\manage.py runserver
或者用PyCharm的绿色启动箭头开启
输入对应URL 得到返回的视图
- templates模块:
存放用于返回的HTML模板
- 静态文件:
在开发过程中 一般将图片、CSS、JS都处理成静态文件 必须存放在APP下的static文件夹下
以上方法不推荐使用
可以使用django的方法 这样以后在修改静态文件位置时 只需要修改配置文件中的STATIC_URL
- 在html中使用传入变量:
在views方法中以字典的格式传入变量
在html文件中用{{key}}的形式来使用
- 关于列表类型的变量使用:
同上述一样传入参数
可以使用{{ name.id }}的方式获取相应下标的值 也可以用循环遍历的方式
- 关于字典类型的变量使用:
可以使用{{ name.key }}的方式获取相应键的值 也可以使用循环方式 循环方式有:
{% for k,v in name.items %} //获取键和值
{% for item in name.keys %} //只获取键
{% for item in name.values %} //只获取值
- 请求与响应:
- Django安全机制 Forbidden错误:
需要在form表单里面加入 {% csrf_token %}
相当于Django提供的校验令牌
- 关闭项目服务:
在PyCharm命令行下 按住Ctrl+C
或者找到项目服务的进程id
输入kill 对应id
【Django数据库操作 ORM】
Django内部提供了orm框架 方便我们对数据库中的表以及其中的数据进行操作
- 安装第三方模块
pip install mysqlclient
- 手动创建数据库
orm框架只能对数据库中的表进行操作 而无法对数据库进行操作 所以就需要手动创建数据库
CREATE DATABASE `数据库名称` DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci;
======== Django操作数据库中的表========
在settings.py文件中进行配置和修改
- 创建表
在models.py文件中写入相关的类:
from django.db import models
# Create your models here.
class UserInfo(models.Model): # 规定类必须继承models
name = models.CharField(max_length=32)
password = models.CharField(max_length=64)
age = models.IntegerField()
"""
当Django读入这个类时 会自动将该类翻译为创建一个表的SQL语句:
create table app01_userinfo(
id bigint auto_increment primary key,
name varchar(32),
password varchar(64),
age int
)
"""
在类写入完毕后 在终端执行 (app必须提前注册 否则不会提交)
PS 项目路径>python manage.py makemigrations
PS 项目路径>python manage.py migrate
- 操作表或数据
在表中新增字段时,由于已存在列中可能已有数据,所以新增列必须指定新增列对应的数据:
1.手动输入一个值
2.设置默认值
字段名称 = models.字段类型方法(default=默认值)
3.允许为空
字段名称 = models.字段类型方法(null=True,blank=True)
新增数据:
类名.objects.create(字段1=值,字段2=值, ... ...)
删除数据:
根据filter()筛选出来的数据删除:
类名.objects.筛选方法名(参数).delete()
比如 UserInfo.objects.filter(id=3).delete()
删除全部数据:
类名.objects.all().delete()
获取数据:
类名.objects.筛选方法名(参数)
比如 UserInfo.objects.all() UserInfo.objects.filter(id=1)
数据的返回类型为 data_list=[对象1,对象2, ... ...]
若只想取一条数据 则可以:类名.objects.筛选方法名(参数).first()
比如 UserInfo.objects.filter(name='aaa').first()
数据的返回类型为一个封装好的对象 不再需要遍历
修改数据:
类名.objects.筛选方法名(参数).update(字段名=值)
比如 UserInfo.objects.filter(name='aaa').update(name='aaa01')
- 删除表或字段
将相关的类或字段注释掉后 再次执行命令即可
PS 项目路径>python manage.py makemigrations
PS 项目路径>python manage.py migrate