网站开发学习Python实现-Django学习-自学注意(6.1.3)
@
1.配置文件相关
1.可以更改时间,地区相关(国际化)
2.BASE_DIR很重要,一个工程要有很好的移植性,必须做到里面的所有路径都为相对路径,这里BASE_DIR可以帮忙
3.DEBUG在发行的视乎记得关
4.INSTALLED_APPS表示注册的应用,前面的都是自带的,如果新建一个app,记得注册
5.MIDDLEWARE中间件注册,当MIDDLEWARE为exception处理的时候是从下往上调用,其他的相反
6.TEMPLATES为模板相关的配置,巧用'DIRS': [os.path.join(BASE_DIR,"templates")],来设置
7.DATABASES为数据库的相关配置,遇到相关数据库就百度一下,默认为sqlite3,一般开发用mysql,在配置mysql时候,记得数据库要提前创建好
8.STATIC_URL还有一个image等等的记得配置好,遵循base
2.应用创建相关
1.migrationswe文件夹为数据库文件的迁移版本,一个都不能删除,因为版本都是迭代的
2.使用mysql时候,在init文件中,加入以下代码,或者使用相关的代码,这里mysql有版本问题
django2.1不支持mysql5.6以下的,如果出错提示version出错,直接给他注释相关的代码就完事
import pymysql
pymysql.install_as_MySQLdb()
3.admin为后台管理相关操作,半自定义后台页面的时候,在这里面引入相关的类,继承创建自己的管理类,调用相关的固定方法和属性
4.models是在app中的,这里写的数据库相关,使用的是orm技术,相关的固定属性和方法的用法查看官方文件
5.urls为mapping相关的,在app和peoject之中都有,是匹配完project的再来根据注册的来匹配app的,对应方法和属性看文档,可以使用反解析工具
6.views相关,在urls中mapping这里相应的方法,返回的都为httpresponse的子对象,redirect等等都是,还有render对模板的渲染等,json等数据
7.middleware中间件,要在setting中注册,分为4个左右的固定方法,相当于servelet中的fliter
3.项目相关
1.相关的migrate操作都是通过manage args来实现
2.urls为project的urls,这里的机制为正则匹配,如果匹配到的为下一个app的方法,进入下个ap的urls进行匹配
3.其他的暂时没学
4.模板相关
1.语法差不多都一样(jinja2,el)
2.可以自定义过滤器,平常也不太常用
3.模板继承有,可以在模板中写block,通过下一个页面的重写block(按照id匹配block)来自定义显示内容
5.其他
1.写路径的时候记住在前面写/,统一这样避免出错
2.csrf防护机制就是使用模板写一个隐藏域token,返回这个页面的时候在cookie中也写一个token,提交的时候会两个一起验证。若没有这东西,别人要改你密码只需要填入更改密码门api,然后这个cookie实在你的浏览器保存了的,发送请求就改了,但是加了csrf防护,黑客没有隐藏域改不了,这个防护只针对post请求
3.cookie和session都是浏览器交互的途径,cookie为键值对保存到客户机的,session保存到服务器的(缓存,数据库,内存,文件),session如果生成,那么会返回一个sessionid给客户机服务器依照这个判断cookie中的sessionid来判断自己主机里面的session是否有效。这个交互信息能放在cookie中就放在cookie中,很重要的东西放session
4.其他想到再总结
关于作者
个人博客网站
个人GitHub地址
个人公众号:
原文地址:https://www.cnblogs.com/simon-idea/p/11435474.html
- RabbitMQ与AMQP协议
- 大数据算法设计模式(2) - 左外链接(leftOuterJoin) spark实现
- hs_err_pid
- django celery的分布式异步之路(二) 高并发
- django celery的分布式异步之路(一) 起步
- SpringMVC拦截器Interceptor
- 元宵快乐:看SQL大师们用SQL绘制的团圆
- Python Redis pipeline操作
- python concurrent.futures
- Deepmind的星际争霸2强化学习教程(1):建立环境与训练模型
- python contextlib 上下文管理器
- Django扩展自定义manage命令
- Elasticsearch分片、副本与路由(shard replica routing)
- EsRejectedExecutionException排错与线程池类型
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- php微信公众号开发之二级菜单
- django中的ajax组件教程详解
- php微信公众号开发之校园图书馆
- 查看keras的默认backend实现方式
- Python包和模块的分发详细介绍
- PHP cookie,session的使用与用户自动登录功能实现方法分析
- Python内置方法和属性应用:反射和单例(推荐)
- 使用OpenCV对车道进行实时检测的实现示例代码
- php 读取文件夹下所有图片、文件的实例
- php微信公众号开发之欢迎老朋友
- Linux基于php-fpm模式的lamp搭建phpmyadmin的方法
- PHP使用glob方法遍历文件夹下所有文件的实例
- Python图像阈值化处理及算法比对实例解析
- 浅析Python 条件控制语句
- 浅谈Django前端后端值传递问题