django_day01
内容回顾
django处理浏览器的请求流程:
请求发送到wsgi wsgi封装了请求的相关数据(request)
django去匹配路径 根据路径判断要执行哪个函数
执行函数 函数执行具体的业务逻辑
函数返回响应 djgango返回 按照HTTP协议响应的格式进行返回
发请求的途径
在浏览器地址栏输入地址 回车 发出get请求
a标签 发出get请求
form表单 发出post请求
get和post区别
get 获取一个资源
?k1=v1&k2=v2 request.GET
get请求没有请求体
post 提交数据
request.POST
数据在请求体中
views.py
def login(request):
#业务逻辑
return 响应
HttpResponse('字符串') #返回一个字符串
render(request,'模板的文件名',{'k1':v1...})
redirect('地址')#重定向
request.method #请求方式 GET POSTORM
models.py
class Publisher(models.Model):
name = models.CharField(max_lenth=32) #varchar(32)
class Book(models.Model):
name = models.CharField(max_lenth=32) #varchar(32)
pub = modelsForeignKey(Publisher,on_delete=models.CASCADE)#一对多的对应关系 外键写在多的一个表中 表示和Publisher这个表又关系 第二个参数表示如果Publisher这个表中参数被删除 Book这个表中的数据也都被删除(默认的)
"""
on_delete 2.0版本后是必须填的
models.CASCADE 级联删除
models.PROTECT 保护
models.SET(v) 删除后设置为默认值
models.SETDEFAULT 删除后设置为默认值
models.SET_NULL 删除后设置为Null
models.DOTHING 什么都不做
"""
orm的操作
查
from app01 import models
models.Publisher.objects.all() # 获取所有的数据 QuerySet 对象列表
models.Publisher.objects.get(name='xxx',id='1') #获取一条存在且唯一的数据 对象
models.Publisher.objects.filter(name='xxx',id='1') #获取多条的数据 对象列表
ret = models.Book.objects.all()#对象列表
for book in ret:
print(book)
print(book.id,book.pk)
print(book.name)
print(boon.pub) #书籍所关联的出版社的对象
print(boon.pub_id) #书籍所关联的出版社的id
新增:
models.Publisher.objects.create(name='xxx') #新增的对象
models.Book.object.create(name='xxx',pub=出版社的对象) #新增的对象
models.Book.object.create(name='xxx',pub=出版社的id) #新增的对象删除:
models.Publisher.objects.get(pk=1).delete()
models.Publisher.objects.filter(pk=1).delete() #删除对象列表 批量删除
编辑:
book_obj.name = 'xxx'
book_obj.pub = 出版社对象
book_obj.pub_id = 出版社的id
book_obj.save() #保存到数据库
models.Book.objects.filter(pk=1).update(name='xx',pub_id=出版社的id) #批量更新6.模板的语法
return render(request,'模板的名称',{'k1':v1,'k2':v2...})
{{ k1 }} {{ k2 }}
for
{% for i in k1%}
{{ forloop.counter }}
{{ i }}
{% endfor %}
if
{% if 条件 %}
xxx
{% endif %}
{% if 条件1 %}
xxx
{% elif 条件2 %}
xxx
{% else %}
xxx
{% endif %}
django基础回顾
django相关命令
下载安装
pip install dajango==版本号 -i 国内源
创建django项目
django-admin startproject 项目名称
启动项目
切换到项目的根路径
python manage.py runserver 127.0.0.1:8080
python manage.py runserver 80 127.0.0.1:80#改端口。
python manage.py runserver 0.0.0.0:80 0.0.0.0:80#改地址。创建app
python manage.py startapp app的名称
数据库迁移的命令
python manage.py makemigrations #检测app下的model.py的变化 记录下变更记录
python manage.py migrate #迁移 将变更记录同步到数据库中
settings 配置
BASE_DIR 项目的根目录
INSTALLED APPS 注册的app
MIDDLEWARE 中间件
注释掉csrf的中间件 可以POST请求
TEMPLATES 模板
DIRS: [os.path.join(BASE_DIR,'templates')]
DATABASES 数据库
静态文件
STATIC_URL = '/static/' #静态文件的别名
STATICFILES_DIRS=[
os.path.join(BASE_DIR,'static')
]
django使用mysql数据库的流程
创建数据库
配置配置settings
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.mysql',
'NAME': 'bookmanager',#数据库名称
'HOST':'127.0.0.1',
'PORT':3306,
'USER':'root',
'PASSWORD':'admin',
}
}使用pymysql模块连接mysql数据库
写在与项目同名的文件夹的
__init__.py中:import pymysql
pymysql.install_as_MySQLdb()在app下的models.py中写入model(Model):
from django import models
class User(models.Model):# 表名 app的名称_user
username = models.CharField(max_length=32)#varchar(32)执行数据库命令
python manage.py makemigrations #检测app下的model.py的变化 记录下变更记录
python manage.py migrate #迁移 将变更记录同步到数据库中
urls.py路径和函数对应关系
from django.conf.urls import url
from django.contrib import admin
from app01 import views urlpatterns = [
url(r'^admin/', admin.site.urls),
url(r'^publisher_list/', views.publisher_list),
url(r'^publisher_add/', views.publisher_add),
url(r'^publisher_del/', views.publisher_del),
url(r'^publisher_edit/', views.publisher_edit),
]函数
from django.shortcuts import render,redirect,HttpResponse
def xxx(request):
request.method 请求方式 GET POST
request.GET #url上携带的参数 ?k1=v1&k2=v2 {} 推荐写法request.GET.get('k1')
request.POST #post请求提交数据 {} #处理业务逻辑 #返回响应
return 响应
#HttpResponse('字符串')
#render(request,'模板的文件名',{}) 返回一个HTML页面
#redirect('地址') 重定向form表单
form标签的属性 action地址 method=’post'
input标签要有name属性 有些标签要有value
要有一个button按钮 或者 type='submit'的input
ORM
对象关系映射
对应关系
类-->> 表
对象-->> 数据行
属性-->>字段
from django import models
class User(models.Model):# 表名 app的名称_user
username = models.CharField(max_length=32)#varchar(32)
django_day01的更多相关文章
- day18_雷神_django第一天
# django_day01 1.http 协议 超文本传输协议,HTTP有很多应用,但最著名的是用于web浏览器和web服务器之间的双工通信. 协议概述 HTTP是一个客户端终端(用户)和服务器端( ...
随机推荐
- 使用dockerfile部署springboot应用
本章简单展示如何最短时间 把springboot应用打包成镜像并创建成容器. 准备工作: 1.安装docker ,保证执行docker version没有问题 2.拉下来一个jdk镜像 docker ...
- labelimg使用指南
labelimg使用指南 From RSMX - https://www.cnblogs.com/rsmx/ 目录 labelimg使用指南 1. 确保已经安装了 Python 环境 2. 使用pip ...
- C#/VB.NET 添加多行文本水印到Word文档
一般情况下,在Word中添加文字水印仅支持添加一个文本字样的水印,但在复杂的办公环境中,由于对不同文档的设计要求,需要在Word文档中添加平铺水印效果,即文档中的水印文字以多行多列分布的形式存在.本文 ...
- 互联网界的IT巨变:从DOS的编辑器,到如今的无代码开发
众所周知,Borland Pascal.Turbo Pascal.Turbo C等这类开发工具,都习惯自带IDE. 因此,我产生了一个大胆的想法. DOS时代下的Turbo C 如果说Anders这类 ...
- Windows快捷安装应用方法(此处以Virtualbox为例)
1.执行已下载的virtualbox的安装exe文件,使用pywinauto模拟点击Windows安装的对应控件 1.1.启动exe文件 start *.exe 1.2.使用pywinauto(也适用 ...
- 2539-SpringSecurity系列--在有安全验证的情况下做单元测试Test
在有安全验证的情况下做单元测试Test 版本信息 <parent> <groupId>org.springframework.boot</groupId> < ...
- Java异步记录日志-2022新项目
一.业务场景 web项目开发中,经常会有的一个操作是记录请求日志,比如记录请求的IP地址,记录请求的路径,记录请求的参数等等. 每个系统都会根据自己的需要来记录一些请求相关的日志.一般会将记录的日志信 ...
- linux 安装Apache php mysql注意事项
由于apache的php组件 php.so是由php安装生成的,故需在Apache安装之后才安装php比较合适 libphp5.so是php5提供的,你还需要编译php5才能生成这个文件 你在PHP的 ...
- 机器学习(公式推导与代码实现)--sklearn机器学习库
一.scikit-learn概述 1.sklearn模型 sklearn全称是scikit-learn,它是一个基于Python的机器学习类库,主要建立在NumPy.Pandas.SciPy和Ma ...
- (一)、数字图像处理(DIP)
1.什么是图像? 图像是人类视觉的基础,是自然景物的客观事实,是人类认识世界和人类本身的重要源泉:也可以说图像是客观对象的一种表示. '图'是物体反射或透射光的分布:'像'是人的视觉系统所接受的图,在 ...