python全栈开发day62-两表操作增删改查,外键,if else模板语法
2024-10-11 18:27:03
一、今日内容总结:
day62
内容回顾:
1. django有关所有命令:
pip install django==1.11.14
django-admin startproject 项目名称
cd 项目
python manage.py runserver 80 0.0.0.0:80
python manage.py startapp app01
python manage.py makemigrations # 保存models修改记录
python manage.py migrate # 操作数据表 2. settings相关:
1. templates 模板相关 DIRS
2. static 静态文件相关
STATIC_URL = '/static/'
STATICFILES_DIRS = [
os.path.join(BASE_DIR,'static')
]
3. 注释CSRF中间件 方便你提交POST请求
4. DATABASES
引擎:mysql
NAME: 数据库名称
HOST:IP地址
PORT: 端口号 3306
USER: 用户名 root
PASSWORD: 密码 ''
5. APP
INSTALLED_APPS=[
'app01',
'app01.apps.App01Config'
]
3.GET和POST
GET:
1.form表单 默认get请求
2.直接在浏览器输入URL
3.a标签 127.0.0.1:8000/add_publisher/?id=1&name=alex request.GET 大字典
request.GET.get('id','')
request.GET['id']
POST:
form表单提交 method='post' 参数不在URL显示,参数在请求体当中 request.POST 大字典
request.POST.get('id','')
request.POST['id']
4. mysql数据的使用:
1. 创建mysql数据库
2. settings.py中要配置
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.mysql',
'NAME': 'day61',
'HOST': '127.0.0.1',
'PORT': 3306,
'USER': 'root',
'PASSWORD': '',
}
}
3. 告诉django使用pymysql来连接数据库:
在与项目同名的文件夹下的__init__.py文件中写:
import pymysql
pymysql.install_as_MySQLdb()
4. 在app01/models.py写类(必须继承models.Model)
class Publisher(models.Model):
id = models.AutoField(primary_key=True)
name = models.CharField(max_length=32,null=False,unique=True) 5. 执行数据库迁移两条命令
python manage.py makemigrations # 保存models修改记录
python manage.py migrate # 操作数据表
5. ORM操作:
1. 查
models.Publisher.objects.all() # 查询所有的对象 ——》对象列表 QuerySet
models.Publisher.objects.get(id='') # 查询一个对象 ——》单独的对象
models.Publisher.objects.filter(id='') # 查询所有符合条件的对象 ——》对象列表 QuerySet
models.Publisher.objects.filter(id='').order_by('id') 2. 增
models.Publisher.objects.create(name='xinhuachubanshe') 3. 删
# 删除一个对象
obj_list = models.Publisher.objects.filter(id='')
obj_list[0].delete()
# 删除所有符合条件的对象
models.Publisher.objects.filter(id='').delete() 4. 改
obj_list = models.Publisher.objects.filter(id='')
obj = obj_list[0]
obj.name = 'asdasd'
obj.save()
6. 模板语法:
render(request,'HTML文件',{'publishers':obj_list}) {{ 变量 }} for 循环
{% for i in publishers %}
{{ i.name }}
{% endfor %} 今日内容:
1. 设计图书管理系统的表结构
书 出版社 作者 书和出版社 多对一
书和作者 多对多 2. 书的增删改查 3. 外键
class Book(models.Model):
id = models.AutoField(primary_key=True)
title = models.CharField(max_length=32, null=False, unique=True)
publisher = models.ForeignKey(to='Publisher',on_delete=models.CASCADE) books = models.Book.objects.all() for book in books:
print(book.publisher_id) # 数据库中的id
print(book.publisher) # 关联的对象
# print(book.publisher.addr)
print('=' * 30) 创建外键关联的方式 publisher = 关联的对象
publisher_obj = models.Publisher.objects.get(id=publisher_id)
book_obj = models.Book.objects.create(title=title, publisher=publisher_obj) publisher_id = 关联对象的id
book_obj = models.Book.objects.create(title=title, publisher_id=publisher_id) 4. 模板相关
{% if edit_book.publisher_id == publish.id %}
<option value="{{ publish.id }}" selected>{{ publish.name }}</option>
{% elif 其他条件 %}
操作
{% else %}
<option value="{{ publish.id }}">{{ publish.name }}</option>
{% endif %}
课上笔记
1.if模板语法
{% if 条件%}
操作....
{%elif 条件%}
操作
{%endif%}
2.外键
publisher = models.ForeignKey(to='Publisher')
操作时:
obj.publisher = 对象
或
obj.publisher_id = id
3.两种改方法不一样
obj1 = edit_obj_list[0] obj2 = edit_obj_list[0]
两者值一样,但内存地址id不一样
edit_obj_list[0].name = new_name
edit_obj_list[0].save()
和
obj = edit_obj_list[0]
obj.name = new_name
obj.save()
不一样
4.其他
二、预习和扩展
1.str 和 repr
列表【】中的对象 直接打印列表会调用repr,因为列表时机器,直接打印对象会调用str
最新文章
- .net中的反射(转载)
- python sorted排序
- Linux学习之CentOS--CentOS6.4下Mysql数据库的安装与配置【转】
- wp仿系统截图
- javascript日历插件
- Android--->;LinearLayout页面布局方式
- Robust Locally Weighted Regression 鲁棒局部加权回归 -R实现
- 在Linux下用gcc编译hello world
- 高并发编程基础(java.util.concurrent包常见类基础)
- POJ 1328 安装雷达 (贪心)
- ubuntu 的远程命令行,老是不能支持联想
- day 31 udp 协议SOCK_DGRAM
- 蓝桥杯之 2n皇后问题(双层dfs,暴力)
- Quartz.NET开源作业调度框架系列(三):IJobExecutionContext 参数传递-转
- 信号处理函数的返回setjmp/longjmp
- hdu 5035 指数分布无后效性
- select 相关 获取当前项以及option js选定
- the type initializer for &#39;system.drawingcore.gdiplus&#39; threw an exception
- Json 装 list<;object>;objectList
- Go语言性能测试