python web框架 Django基本操作
- django 操作总结!
- django框架安装:
- cmd安装: pip3 install django
- pycharm安装: 在python变量下 搜索 django 安装
创建django项目:- cmd下创建django项目:
- 创建django程序:
- django-admin startproject mysite
- 进入程序目录:
- cd mysite
启动socket服务端,等待用户发送请求 IP 端口- python manage.py runserver 127.0.0.1:8080
pycharm下创建django项目:- 直接新建一个django项目即可!
- 启动程序:直接运行django,启动之后会生成一个固定的IP和端口的url地址。
- 端口默认:8000;IP默认:127.0.0.1。浏览器直接访问这个网址,有提示证明创建成功。
- pycharm下django的操作:
- 一、配置文件:
- - 在项目下:
- - 创建静态文件 static 用于存放 CSS,JS,图片等文件
- - 创建视图函数文件 用于编写视图函数
- - 创建sql数据库连接文件 通过类创建连接数据库的操作,减少代码复用。
- - settings中添加或是查看路径是否正确:
- - 模版路径:检查TEMPLATES 下的 "DIRS":[os.path.join(BASE_DIR,'templates')],
- - 静态文件路径:STATICFILES_DIRS = (os.path.join(BASE_DIR,'static'),)
- - 隐藏MIDDLEWARE 路径中 'django.middleware.csrf.CsrfViewMiddleware' 信息
- 二、路由系统:
- 路由关系: url ---> 函数
- 在urls.py 文件中导入视图函数文件,写上路由关系!
- 示例:
- from app01 import views
- url(r'^login/', views.login),
- django中的路由系统和其他语言的框架有所不同,在django中每一个请求的url都要有一条路由映射,这样才能将请求交给对一个的view中的函数去处理。
- 其他大部分的Web框架则是对一类的url请求做一条路由映射,从而是路由系统变得简洁。
- 三、视图函数:
- 确定好相对应的路由关系之后,就需要编写路由函数。所有的信息都是从数据库中获取,此时就需要在函数中建立与数据库的链接,获取数据!pymysql操作,略过!
- 注意点:
- - 定义函数的时候,必须设置形参 request 接收浏览器的请求!
- - 判断请求方式:request.method
- - 获取不通方式提交的数据:
- (GET方式,POST方式) --->
GET方式提交的信息在请求头url中,在页面网址上就能看到!
POST方式提交的信息在请求体中。不能直接查看到!
- request.GET.get() 获取get方式提交的一个值
- request.POST.get() 获取post方式提交的一个值
- request.POST.getlist() 获取post方式提交的数组信息(多值)
- - 返回信息:(三种方式)
- return HttpResponse('字符串') 直接返回字符串
- return redirect('URL') 跳转到某个url页面下
- return render(request,'模板路径(.html文件)') 跳转到某个模版页面
- return render(request,'模板路径',{值}) 跳转到某个模版页面 同时给这个页面返回值
- render实质:1. 获取模板+数据,后台渲染;2. HttpReponse(...)把渲染之后的字符串信息返回给页面
补充:模板渲染是在后台执行,完毕之后再把字符串返回给模版,通过浏览器的渲染显示!- 值类型:传值必须是字典形式!可以传多个值!key为字符串,value可以为单值,列表,字典!
- { 'k1': 'v1', 单值类型
- 'k2': [1,2,32,34],列表类型
- 'k3': {'x1':'v2'...}, 字典类型
- }
- 四、模版:
- 模版渲染:
- 对于函数传递回来的值,模版都是通过值的key去获取!!!这个一定要注意!
- 模版语言:
- (注意:对于列表或是字典,获取其中的元素是用.的方式!!!
- 前端没有索引这个概念 用于去取值,但前端支持点的方法去获取。
- 例如一个字典 dic = {"k1":v1} ====> dic.k1获取值 v1)
- 获取单值:{{k1}}
- 获取列表中的某个值:{{k2.索引值}}
- 获取所有单值:循环方式:
- {% for item in k3 %}
- {{item.k1}}
- ……
- {% endfor %}
- 若是有条件判断:{% if 条件 %} 语句 {% else %} 语句 {% endif %}
- 模版操作方式:
- 1、新url方式:点击跳转到另一个url页面
- - 注意:要跳转到新urls路径 必须以这种方式写 -----> "/urls路径/" 。否则后台无法识别地址会报错!
- 不管是form表单或是a标签!注意跳转或是提交信息的urls路径的书写方式!
- 2、模态框操作:点击触发事件,出现弹框!
- - 前端js的应用
- 注意点:
- http连接,建立在TCP连接之上! http 协议具有:无状态,短连接的特性!
- 模版引擎的渲染,是在服务端进行的
- wsgi 是一个协议,提供通信接口,实质就是socket
- 重定向 是浏览器完成的操作!
- 五、ajax
- html中,有点击跳转,页面刷新功能的标签是:a标签,或是form表单!如果不想让页面自动刷新而是人为控制,此时就需要用到ajax.
- 阻止事件发生的操作:
- 1、标签里写事件类型,函数前写return,函数中也写return false;
- - <a onclick='return func();'></a>
- func(){
- ……
- return false
- }
- 2、通过jQuery对象的方式,给标签绑定某个事件,直接在事件触发函数中写return false
- - <a id="a"></a>
- $("#a).click(function(){
- ……
- return false
- })
ajax是jQuery的一个方法,使用前需要先导入jQuery文件!- 注意:页面数据不管提交或是接收,都必须是字符串类型。
- data传值的类型:字符串,或是数组,没有字典格式!若想传递先利用JSON转换成字符串!
- 页面的JSON语法:
- JSON.stringify(对象) ----> 字符串
- JSON.parse("字符串") ----> 对象
- ajax语法:
- $.ajax({
- url: '要提交的地址',
- type: 'POST', // GET或POST,提交方式
- data: {'k1': 'v1','k2':'v2'}, // 提交的数据
- dataType:"JSON", //设置接收的数据类型
- traditional: true,// 如果提交的数据的值有列表,则需要添加此属性
- success:function(data){ // 成功之后,执行回调函数
- location.href = "要跳转的地址"
- location.reload() //页面重新加载
- // 当前服务端处理完毕后,自动执行的回调函数
- // data返回的数据
- }
- })
- 为配合ajax的使用,视图函数也做了一定的修改,有了一个存放状态的字典,有了错误检测!返回的结果也必须是字符串类型的信息!
- 视图函数代码举例:
- def change_class(request):
- ret = {"status":True,"message":None}
- try:
- cid = request.POST.get("cid")
- cname = request.POST.get("cname")
- sql = "update class set cname = %s where cid = %s"
- sqlmodus.put(sql,[cname,cid,])
except Exception as e:- ret["status"] = False
- ret["message"] = "处理异常"
- return HttpResponse(json.dumps((ret))) //利用JSON把对象转成字符串返回模版
- 模态与新urls 应用场景分析:
- 模态对话框(Ajax)用于:
- - 少量输入框
- - 数据少
- 示例:登录
- 新URL方式
- - 操作多
- - 对于大量的数据以及操作
- 具体怎么应用还是需要视具体情况及要求操作!没有绝对只说!
Http请求生命周期:- 请求头 -> 提取URL -> 路由关系匹配 -> 函数 (模板+数据渲染) -> 返回用户(响应头+响应体)
- 六:母板操作:
- Django母版:
- 母版: 存放所有页面公用
- 子板:
- 继承母版
- - 自定义当前页面私有的东西
- 按照正常操作生成一个母板页面,
- 在head标签中写上两个block块作为标志位,用于导入CSS和JS文件
- 在body标签下写一个block块作为标志位,用于导入不同的代码
- 母版:
- <html>
- <head>
- {% block css %} {%endblock%}
- ...
- {% block js %} {%endblock%}
- </head>
- <body>
- {% block table %} {%endblock%}
- </body>
- </html>
- 子板:
- {% extends "layout.html "%} 引入母板
- {% block css %} CSS文件路径或是代码 {%endblock%}
- {% block js %} JS文件路径或是代码 {%endblock%}
- {% block table %} 文本内容 {%endblock%}
- 七、响应式布局:(CSS布置)借用两大框架:BootStrap和fontawesome
- 1. BootStrap响应式布局: @media()
- 2. 栅格 (把整个页面分成12份,不同的类名,对应着不同的类型,具体看文档)
- 3. 表格
- 4. 导航条
- 5. 路径导航
- 6. fontawesome 图标
- 7. 布局position:absolute 对页面区域的划分及占比 fixed 是针对窗口做的定位;absolute是绝对定位,relative 相对定位是给absolute定位做的标杆!
- 8. :hover方法,以前只知道一个用法:鼠标移动到某个标签上时,执行的操作。
- 现再补充以下:
- 当鼠标移动到xx样式的父标签上时,其下子标签.g应用以下属性
- .xx:hover .g{
- CSS样式
- }
- 八、cookies
- a. 保存在浏览器端“键值对”
- b. 服务端可以向用户浏览器端回写cookie
- c. 客户端每次发送请求时,会携带cookie去匹配
- - 发送Http请求时,在 请求头 中携带当前所有可访问的cookie
- - 返回时,存在于 响应头
- - 可以设置cookies的超时时间(生命周期)
- 对象 obj的三种样式:
- obj = HttpReponse(..)
- obj = render(...)
- obj = redirect(..)
- cookies的设置和获取:
- - 明文格式:
- 设置cookies 明文格式!
- obj.set_cookie(
- key, //键
- value='', //值
- max_age=None, //超时时间
- expires=None, //具体的超时日期
- path='/', //为某个url设置cookies,仅在该路径下生效 / 代指所有路径
- domain=None, // 域名 访问某个域名网站,设置cookies
- (一级域名绑定其下域名也可以拿到,若是二级域名极其以下设置cookies,则其他的域名拿不到!)
- //安全相关!
- secure=False, // Https协议
- httponly=False //只有通过http协议来回发送请求才用! 只能在Http请求中传输,js代码无法获取到
- )
- 读取:request.COOKIES.get("键名")
- - 密文格式:设置加密的cookies
- cookie签名:
- obj.set_signed_cookie('ticket',"123123",salt='加密字符串')
- 获取签名的cookies
- request.get_signed_cookie("key名",salt="加密方式")
- 注意:一般设置cookies,常用的参数有:key,value,max_age,path,salt(密文才有,其他都有!)
python web框架 Django基本操作的更多相关文章
- 利用python web框架django实现py-faster-rcnn demo实例
操作系统.编程环境及其他: window7 cpu python2.7 pycharm5.0 django1.8x 说明:本blog是上一篇blog(http://www.cnblogs.co ...
- python web框架 django wsgi 理论
django wsgi python有个自带的wsgi模块 可以写自定义web框架 用wsgi在内部创建socket对象就可以了 自己只写处理函数就可以了django只是web框架 他也不负责写soc ...
- python web框架 django 工程 创建 目录介绍
# 创建Django工程django-admin startproject [工程名称] 默认创建django 项目都会自带这些东西 django setting 配置文件 django可以配置缓存 ...
- python web框架 Django进阶
django 进阶 基础中,一些操作都是手动创建连接的非主流操作,这样显得太low,当然也是为了熟悉这个框架! 实际中,django自带连接数据库和创建app的机制,同时还有更完善的路由系统机制.既然 ...
- python web框架Django入门
Django 简介 背景及介绍 Django是一个开放源代码的Web应用框架,由Python写成.采用了MVC的框架模式,即模型M,视图V和控制器C.它最初是被开发来用于管理劳伦斯出版集团旗下的一些以 ...
- Python Web框架——Django
返回顶部 使用框架简单快速开发特定的系统. pip freeze > requirements.txt pip install -r requirements.txt 一 MVC和MTV模式 二 ...
- python web框架Django——ORM
ORM简介 MVC框架中包括一个重要的部分,就是ORM,它实现了数据模型与数据库的解耦,即数据模型的设计不需要依赖于特定的数据库,通过简单的配置就可以轻松更换数据库 ORM是“对象-关系-映射”的简称 ...
- python web框架 django 练习1 django 1.11版本
django练习 在我自己项目里创建一个xiaoliu的文件夹 里面创建s1.py 文件 s1.py文件 里面写各种函数 from django.shortcuts import HttpRespon ...
- python web框架 django工程的创建
安装 django pip3 install django pip install django 安装完后出现这两个文件 django-admin 用来创建文件夹 在script目录 执行这个命令 d ...
随机推荐
- SoapUI使用方法-01发送http请求
soap ui http://blog.csdn.net/russ44/article/details/51680083 一.发送HTTP请求消息 1.打开soapUI. 2.新建一个项目,实例如下: ...
- QPushButton 响应回车 设置默认按钮
ui.pushButton->setFocus(); //设置默认焦点 ui.pushButton->setShortcut( QKeySequence::InsertParagraphS ...
- UOJ104 【APIO2014】Split the sequence
本文版权归ljh2000和博客园共有,欢迎转载,但须保留此声明,并给出原文链接,谢谢合作. 本文作者:ljh2000 作者博客:http://www.cnblogs.com/ljh2000-jump/ ...
- graphlab 安装好后的导入配置
本以为下好了的结果... 然后等个十几二十分钟... 关掉这个页面重新打开,再重新导入graphlab 貌似好了...但是,,, 发现是自己的文件放错盘了...在F盘... 然后就好啦~
- mysql与mongodb命令对比
连接:mysql: mysql -h localhost -u username -pmongodb:con = pymongo.Connection(‘localhost’,27017)显示数据库m ...
- DNS安装配置
安装Bind软件: rpm -qa | grep bind bind-utils--.x86_64 bind--.x86_64 bind-libs--.x86_64 配置named.conf , vi ...
- Linux开放端口
开放端口8081 -A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 8081 -j ACCEPT 重启端口服务 ser ...
- js写出斐波那契数列
斐波那契数列:1.1.2.3.5.8.13.21.34.…… 函数: 使用公式f[n]=f[n-1]+f[n-2],依次递归计算,递归结束条件是f[1]=1,f[2]=1. for循环: 从底层向上运 ...
- MySQL索引分析
索引的出现解决数据量上升导致查询越来越慢的问题,优化数据的查询,提高查询的速度. 索引 定义: 通过各种数据结构实现的值到行位置的映射.快速定位与访问特定的数据. 作用: 提高访问速度 实现主键.唯一 ...
- DH01-简单工厂模式
模式简介 简单工厂模式又称静态工厂方法模式,定义一个用于创建对象的接口.其主要组成部分为: 工厂类角色:模式的核心,具有一定的商业逻辑和判断逻辑.如示例中的类AnimalSpecies 抽象产品角色: ...