本文阅读注意事项
1.刚进公司的时候我们的版本比较老旧,后来因为维护的扩展且1.8版本也开始不再维护,今年将开始使用1.11.11版本我们这里也统一使用1.11.11
2.计算机名不能是中文,项目也不要用中文
3.使用前关闭浏览器缓存
4.开发过程 pycharm一定要从右上角点击启动 不要右键运行
5.每创建一个app都把他添加到INSTALLED_APPS
6.为了安全方式异网提交表单,我们可以开启csrf中间件,但是我们方便学习先注释,项目完成后再开启,在setting的MIDDLEWARE中
7.可能会有不兼容的情况,尽量使用python3.6
8.用django一定要保证只有一个在运行状态 切记切记!!!!!!!
9..一个pycharm只能有一个工程
10.没有这个url,浏览器会在资源后面添加/ 继续访问
11.在ORM中类一定一定要继承 models.Model
12.每次修改完表之后,必须执行数据库迁移才能起作用
13.发送ajax的按钮一定不能放在form表单里
14.request.user.save() # 修改密码一定要记得保存
使用流程概述
1.安装django并验证是否安装成功
2.创建项目 创建app
3.关闭 csrf
4.注册app
5.配置template
6.配置静态文件 详见【静态文件配置】
7.弄orm setting配置,orm, 输入数据库迁移命令创建表
8.学习路由层
Django中的小细节
1.如果不想通过manage,py 来输入命令可以在 启动tool
2.会自动创建一个app并且注册,后续需要手动注册
3.浏览器匹配不上的话,就会加一个/重定向
在表单提交的时候一定action要注意前面是否加了/
加了就是网服务器下的资源访问
不加是当前页面后面的/rel去访问
4.如果是 SyntaxError: Generator expression must be parenthesized 这个错误可以修改源码 去掉 逗号
5.request.POST 查出来相当于一个列表,get只能拿到最后一个,可以用get_list("K")的形式 ['xzq', 'xzq']
6.query对象 无法使用内部元素的属性
7.在跨表查询中,正向查找需要用到类的属性(非表名)
8.多对多正向查找 obj.外键.all()
9.如果不再视图层使用ORM可以增加如下代码:
os.environ.setdefault("DJANGO_SETTINGS_MODULE", "day58.settings")
import django
django.setup()
在导入models 使用
Django完成一次流程
1.浏览器发送url请求
2.通过 WSGI 拿到path
3.进url 进行路由匹配
4.进入视图函数
5.拿到html 文件通过自己的content字典 把里面的Django{}进行替换
6.走一次中间件
3.
视图函数处理具体页面(通过jinja2语法把html页面的一些占位符替换程我们的数据)再返回app
app返回结果为服务器页面(二进制)
Django是什么
Django就是基于B/C架构的Web应用框架,由我们python开发
Django是一个基于MVC构造的框架。不需要考虑到C主要是T模板 称为 MTV模式。
关于Django的下载
pip3 install django==1.11.9
验证下载成功
创建项目
django-admin startproject mysite
django-admin startapp appname
以上方法不能创建
templates
我们将使用使用pycharm自带的创建
Django内容简单的介绍
django各个文件的作用
应用名
migrations 数据库迁移记录相关数据
admin.py django后台管理相关
models.py 模型表相关
views.py 视图函数相关
项目名
settings.py 配置文件
urls.py 路由与视图函数的映射关系
templates
项目用到的所有的html文件
manage.py
django入口文件
项目中__init__作用
注释CSRF 添加app
在setting 中的MIDDLEWARE和INSTALLED_APPS
INSTALLED_APPS里添加添加'app01.apps.App01Config', #项目下的apps.py文件.类名
写路由
1.导入视图函数
2.发现路径以index开头的就把request交给index 函数处理
视图函数
return 三件套
HttpResponse
HttpResponse (request对象,网页文件,替换的字典)
render
redirect
重定向新的网页 参数url
内部传入一个字符串参数,返回给浏览器。
静态文件配置
如果我们是绝对路径导入静态文件
用的是路由匹配
配置STATICFILES_DIR作用:只要是STATIC_URL Request URL接口前缀 (比如xxx)
那么就查找STATICFILES_DIR下的目录开始找
注册,书籍管理实例
网页资源下的某个节点
不写:当前页面提交
写了某个节点
以及 ip+端口+资源的形式
ORM
1.在setting DATABASES={ 'default':{}} 中配置
ENGINE': 'django.db.backends.mysql', 'NAME': 'day55', #数据库名 'HOST':'127.0.0.1', 'PORT':3306, 'USER':'root', 'PASSWORD':'123'
2.替换数据库 改为mysql的
方式1:在你的项目文件夹下面的__init__.py
方式2:也可以在你的应用文件夹下面的__init__.py
import pymysql
pymysql.install_as_MySQLdb() # 告诉django用pymysql代替mysqldb连接数据库
3.创建表
一定要继承models.Model
from django.db import models # Create your models here. class MYSQL(models.Model): id=models.AutoField(primary_key=True) username=models.CharField(max_length=255) password=models.CharField(max_length=255)
4.在配置完 models之后
可以在class 输入数据库迁移命令
python3 manage.py makemigrations 将你的数据库变动记录到一个小本本上(并不会帮你创建表) python3 manage.py migrate 将你的数据库变动正在同步到数据库中
创建对象
对象=.表.object.create(*kwargs)
查询对象
对象=.表.object.filter(过滤条件) <QuerySet [<XXX: XXX object>]>
m1=models.XXX.filter(username=username,password=password) m1=models.XXX.all()
#建议不要使用get,get要确保 查出来对象必须只有一个,否则异常
改
m1=models.XXX(username=username,password=password) m1.save() m1=models.XXX.filter(username=username,password=password) m1.update()
删:
jqueryset 可以通过delete
m1=models.XXX.objects.filter(username="我是一天个哈哈哈") m1.delete()