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基本操作的更多相关文章

  1. 利用python web框架django实现py-faster-rcnn demo实例

    操作系统.编程环境及其他: window7  cpu  python2.7  pycharm5.0  django1.8x 说明:本blog是上一篇blog(http://www.cnblogs.co ...

  2. python web框架 django wsgi 理论

    django wsgi python有个自带的wsgi模块 可以写自定义web框架 用wsgi在内部创建socket对象就可以了 自己只写处理函数就可以了django只是web框架 他也不负责写soc ...

  3. python web框架 django 工程 创建 目录介绍

    # 创建Django工程django-admin startproject [工程名称] 默认创建django 项目都会自带这些东西 django setting 配置文件 django可以配置缓存 ...

  4. python web框架 Django进阶

    django 进阶 基础中,一些操作都是手动创建连接的非主流操作,这样显得太low,当然也是为了熟悉这个框架! 实际中,django自带连接数据库和创建app的机制,同时还有更完善的路由系统机制.既然 ...

  5. python web框架Django入门

    Django 简介 背景及介绍 Django是一个开放源代码的Web应用框架,由Python写成.采用了MVC的框架模式,即模型M,视图V和控制器C.它最初是被开发来用于管理劳伦斯出版集团旗下的一些以 ...

  6. Python Web框架——Django

    返回顶部 使用框架简单快速开发特定的系统. pip freeze > requirements.txt pip install -r requirements.txt 一 MVC和MTV模式 二 ...

  7. python web框架Django——ORM

    ORM简介 MVC框架中包括一个重要的部分,就是ORM,它实现了数据模型与数据库的解耦,即数据模型的设计不需要依赖于特定的数据库,通过简单的配置就可以轻松更换数据库 ORM是“对象-关系-映射”的简称 ...

  8. python web框架 django 练习1 django 1.11版本

    django练习 在我自己项目里创建一个xiaoliu的文件夹 里面创建s1.py 文件 s1.py文件 里面写各种函数 from django.shortcuts import HttpRespon ...

  9. python web框架 django工程的创建

    安装 django pip3 install django pip install django 安装完后出现这两个文件 django-admin 用来创建文件夹 在script目录 执行这个命令 d ...

随机推荐

  1. linux基础(8)-颜色显示

    echo显示内容-带颜色显示 格式:echo -e "\033[字体背景颜色;文字颜色m字符串 \033[0m" 实例:echo -e "\n\n \t\t \033[4 ...

  2. Springboot- Caused by: org.hibernate.AnnotationException: No identifier specified for entity:

    错误与异常: Caused by: org.hibernate.AnnotationException: No identifier specified for entity: 原因:引用了不对的包, ...

  3. 《Think in Java》(八)多态

    "封装"通过合并特征和行为来创建新的数据类型: "实现隐藏"通过将细节"私有化"把接口和实现分离开来: "多态"消除类型 ...

  4. compile to 32-bit elf file

    nasm -f elf -o a.o a.asm gcc -c -m32 -o b.o b.c ld -s -m elf_i386 -Ttext 0x30400 -o b.bin b.o a.o

  5. java: file/outputStream/InputStream 复制文件

    java i/o 复制文件 public static void main(String[] args) throws Exception { // TODO 自动生成的方法存根 if(args.le ...

  6. 解决:Eclipse安装Pydev插件报错: An error occurred while collecting items to be installed session context was:(profile=...

    今天在Elipse上安装Pydev插件时报错: An error occurred while collecting items to be installed session context was ...

  7. c# 打开第三方软件(如:电脑自带看图软件)

    嘿嘿,直接上示例代码 /// <summary> /// 利用第三方软件浏览加工图纸 /// </summary> /// <param name="fileP ...

  8. Kali 2.0 安装后的初始配置

    准备 1.VMware Workstation 2.kali-linux-2.0-amd64.iso 安装 手动安装 VMware 创建新的虚拟机,先不导入ISO文件,系统选择Debian 7.x 6 ...

  9. Java_脚本引擎_02_在Idea中进行Nashorn的Debug

    一.前言 本文承接上一节:Java_脚本引擎_01_用法入门 这一节我们来看下怎么在idea中进行Nashorn的Debug ,又或者说怎么在Idea中进行js的Debug 注:idea本身就支持js ...

  10. GCD多线程的使用

    转载自http://blog.csdn.net/nono_love_lilith/article/details/7829557 写得非常好 1.下面来看下如何使用gcd编程的异步 dispatch_ ...