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 POST
- def login(request):
ORM
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#改地址。
- python manage.py runserver 127.0.0.1:8080
创建app
- python manage.py startapp app的名称
数据库迁移的命令
- python manage.py makemigrations #检测app下的model.py的变化 记录下变更记录
- python manage.py migrate #迁移 将变更记录同步到数据库中
- python manage.py makemigrations #检测app下的model.py的变化 记录下变更记录
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',
- }
- }
- DATABASES = {
使用pymysql模块连接mysql数据库
写在与项目同名的文件夹的
__init__.py
中:- import pymysql
- pymysql.install_as_MySQLdb()
- import pymysql
在app下的models.py中写入model(Model):
- from django import models
- class User(models.Model):# 表名 app的名称_user
- username = models.CharField(max_length=32)#varchar(32)
- from django import models
执行数据库命令
- python manage.py makemigrations #检测app下的model.py的变化 记录下变更记录
- python manage.py migrate #迁移 将变更记录同步到数据库中
- python manage.py makemigrations #检测app下的model.py的变化 记录下变更记录
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.conf.urls import url
函数
- 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('地址') 重定向
- from django.shortcuts import render,redirect,HttpResponse
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)
- from django import models
- class Publisher(models.Model):
django_day01的更多相关文章
- day18_雷神_django第一天
# django_day01 1.http 协议 超文本传输协议,HTTP有很多应用,但最著名的是用于web浏览器和web服务器之间的双工通信. 协议概述 HTTP是一个客户端终端(用户)和服务器端( ...
随机推荐
- RPA应用场景-对公账户开户资质审查
场景概述 对公账户开户资质审查 所涉系统名称 人民银行账户管理系统 人工操作(时间/次) 0.5小时 所涉人工数量 132 操作频率 不定时 场景流程 1.机器人自动登录人民银行账户管理系统 2.查询 ...
- Linux命令格式、终端类型和获取帮助的方法
Linux用户类型 Root用户:超级管理员,权限很大 普通用户:权限有限 终端 terminal 终端类型 物理终端:鼠标.键盘.显示器 虚拟终端:软件模拟出来的终端 控制台终端: /dev/con ...
- windows脚本bat做文件备份
@ECHO OFF echo 切换到当前目录... cd /d %~dp0% echo 开始复制Code1... echo d | XCOPY Code1 ..\备份\bakdir\Code1 /s ...
- NC212914 牛牛与后缀表达式
NC212914 牛牛与后缀表达式 题目 题目描述 给定牛牛一个后缀表达式 \(s\) ,计算它的结果,例如,1+1对应的后缀表达式为1#1#+,'#'作为操作数的结束符号. 其中,表达式中只含有'+ ...
- NC23036 华华听月月唱歌
NC23036 华华听月月唱歌 题目 题目描述 月月唱歌超级好听的说!华华听说月月在某个网站发布了自己唱的歌曲,于是把完整的歌曲下载到了U盘里.然而华华不小心把U盘摔了一下,里面的文件摔碎了.月月的歌 ...
- Host–Parasite(主从关系): Graph LSTM-in-LSTM for Group Activity Recognition
This article aims to tackle the problem of group activity recognition in the multiple-person scene. ...
- Math类和函数定义
Math这个类是java系统内部当中的一个类,他用来提供一些基本的数学操作,他也有些工具可以给我们用比如 :abs--算绝对值 pow--算幂次 random--随机数 round--四舍 ...
- Kafka Topic Partition Offset 这一长串都是啥?
摘要:Offset 偏移量,是针对于单个partition存在的概念. 本文分享自华为云社区<Kafka Topic Partition Offset 这一长串都是啥?>,作者: gent ...
- input函数的高级使用
经典的a+b问题终于重出江湖了 a=input('a = ') b=input('b = ') print(a+b)//error,因为此时ab是字符串类型,其加号起到的是连接的作用 所以这就是类型转 ...
- Windows快捷安装应用方法(此处以Virtualbox为例)
1.执行已下载的virtualbox的安装exe文件,使用pywinauto模拟点击Windows安装的对应控件 1.1.启动exe文件 start *.exe 1.2.使用pywinauto(也适用 ...