学习记录参考:
讲师博客:http://www.cnblogs.com/wupeiqi/articles/5433893.html
老男孩博客:http://oldboy.blog.51cto.com/
运维平台参考:http://oldboy.blog.51cto.com/2561410/1123127

WEB框架简写与解释
解释:Web应用框架有助于减轻网页开发时共通性活动的工作负荷,例如许多框架提供数据库访问接口、标准样板以及会话管理等,可提升代码的可再用性。
  MVC框架 == Model    View      Controller
        数据库    模板文件    业务处理
  MTV框架 == Model    Template     View
        数据库    模板文件    业务处理
  Django使用的就是MTV框架。

Django
安装:pip3 install django

一个项目的创建和编写步骤如下:
1:创建项目:django-admin startproject mysite
  mysite 创建的默认目录和文件
    - mysite # 对整个程序进行配置
    - init
    - settings    # 配置文件
    - url    # URL对应关系
    - wsgi    # 遵循WSGI规范,uwsgi + nginx 可在线上运行
    - manage.py   # 管理django程序
    - python manage.py
    - python manage.py startapp xx    # 创建一个app程序,注意每个项目可以单独创建一个APP(资产,配管,私有云等)
    - python manage.py makemigrations    # 生成数据库
    - python manage.py migrate # 生成数据库
  启动项目:python manage.py runserver 127.0.0.1:8001
也可以直接通过pycharm创建django站点和app,并且可以直接启动。

2:APP
当创建完项目管理平台后,可以在里面创建项目APP,如:
  python manage.py startapp cmdb
  python manage.py startapp openstack
APP创建完成后,需要将APP的名称添加到settings中的INSTALLED_APPS内。

APP 内包含:
  migrations:记录数据库操作和修改表结构的记录
        这里注意:在python3中从文件夹内倒入模块不需要__init__.py,在python2中需要。
  admin # Django为我们提供的后台管理
  apps # 配置当前APP
  models # ROM,写指定的类,通过命令可以创建数据库结构
  test # 单元测试
  views # 业务逻辑代码

3:静态文件和模板文件的配置
模板文件:
1:在项目内创建templates文件夹
2:将html页面文件放到此文件夹内
3:修改settings中在TEMPLATES修改:'DIRS': [os.path.join(BASE_DIR,'templates')],
4:views中的业务代码就可以直接调用html页面
如:return render(request,'login.html')
静态文件:
1:在项目内创建static文件夹
2:将css,js文件放置到此文件夹内
3:修改settings最后增加
  STATICFILES_DIRS = (
    os.path.join(BASE_DIR,'static'), #注意要加逗号
  )
4:静态文件在html中的引入:
  <link rel="stylesheet" href="/static/commons.css" />
  <script src="/static/jquery-1.12.4.min.js"></script>
注意:静态文件夹要用:static
4:注释CSRF,这项在初期配置使用可以先关闭,这个功能是方式XSS跨站脚本功能的。
5:定义路由规则
  url.py
    'login' --> 函数名
6:定义视图函数
  app下views.py
  def func(request):
    # request.method (GET / POST)
    # request.POST.get('',None)
    # request.GET.get('',None) GET是根据URL取值,获取请求发来的URL数据
    # return HttpResponse('字符串')
    # return render(request,'html模板文件路径')
    # return redirect('只能填写URL') 这里只能是url,因为是返回给客户,客户要重新访问
7:模板渲染
比如后台函数返回:return render(request,'home.html',{'userinfo':user_info})
前台页面通过变量渲染:<div>{{ userinfo }}</d iv>

特殊的模板语言
  -- {{ 变量名 }}
  -- {% for item in list %} {{ value }} {% endfor %} 可以进行if嵌套
  ###索引###
  如:return render(request,'home.html',{'current_user':'jack',
                    'user_list':['jk1','jk2'],
                    'user_dict':{'k1':'v1','k2':'v2'}})
  以上返回值在html中取值方法;
    <div>{{ current_user }}
    <a> {{ user_list.0 }}</a> 值为列表的获取
    <a> {{ user_list.1 }}</a>
    <a> {{ user_dict.k1 }}</a> 值为字典的获取
    <a> {{ user_dict.k2 }}</a>
  ####条件##### 支持嵌套
  如:return render(request,'home.html',{'current_user':'jack',
                    'user_list':['jk1','jk2'],
                    'age': 18,
                    'user_dict':{'k1':'v1','k2':'v2'}})
  条件判断方法:
  {% if age %}
    <a>为真</a>
    {% if age > 16 %}
      <a>...</a>
    {% endif %}
  {% else %}
    <a>为假</a>
  {% endif%}

实例1:用户登录认证并重定向到新页面见:login,home
url(r'^login',views.login),
url(r'^home',views.home),

view代码如下:

def login(request):
# 获取用户提交的方法
# request 包含了客户端用户发来的所有信息
error_msg = ''
if request.method == 'POST':
# 获取用户通过POST提交过来的数据
# request.POST 方法封装了所有用户发过来的请求
# uname = request.POST['username']
# upwd = request.POST['pwd']
# 最好用get方法获取数据,即使没有也不会报错
uname = request.POST.get('username',None)
upwd = request.POST.get('pwd',None)
if uname == 'root' and upwd == 'root':
# return HttpResponse('登录成功')
return redirect('/home')
elif not uname or not upwd:
error_msg = '用户名密码不允许为空'
else:
# 用户名密码不匹配
error_msg = '用户名或密码错误'
return render(request,'login.html',{'error_msg':error_msg})

Django学习之 - 基础部分的更多相关文章

  1. Django学习之 - 基础模板语言

    模板语言if/else/endif {% if today_is_weekend %} <p>Welcome to the weekend!</p> {% else %} &l ...

  2. Django学习之 - 基础ORM

    ORM操作参考: http://www.cnblogs.com/wupeiqi/articles/5246483.html 1:根据类自动创建数据库表,(类创建文件:models.py) 2:根据类对 ...

  3. Django学习之 - 基础视图函数

    视图:Views 获取用户请求的方法: 1: request.GET 2: request.POST 3: request.FILES # checkbox 等多选文件 4:request.POST. ...

  4. Django学习之 - 基础路由系统

    路由系统:URL 1:一个URL对应一个类或函数: url(r'^register',reg.register) 函数写法 url(r'^cbv',reg.cbv.as_view()) 类写法 2:通 ...

  5. Django学习系列之Form基础

     Django学习系列之Form基础 2015-05-15 07:14:57 标签:form django 原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 .作者信息和本声明.否则将追 ...

  6. Django学习笔记(基础篇)

    Django学习笔记(基础篇):http://www.cnblogs.com/wupeiqi/articles/5237704.html

  7. Django学习---Web框架及基础知识

    Django学习---Web框架 web框架的本质 我们在学socket,我们创建一个socketserver,然后运行起来,有一个client客户端要连接socket服务端,连接上之后,如果两边都没 ...

  8. django 学习第一天搭建环境

    目前django版本是1.10,我学习的基础教材是 Web Development with Django Cookbook, Second Edition 搭建好配置环境 ssh免认证登录 修改一下 ...

  9. 今天主要推荐一下django学习的网址!

    前言:每个月忙碌的头20天后,在上班时间投入到django理论学习的过程中,花了差不多3天时间简单的研究了一下django,着实废了我不少脑细胞. 采用虫师前辈的一张图和话: 如果你把这过程梳理清晰了 ...

随机推荐

  1. HashMap,Hashset,ArrayList以及LinkedList集合的区别,以及各自的用法

    基础内容 容器就是一种装其他各种对象的器皿.java.util包 容器:Set, List, Map ,数组.只有这四种容器. Collection(集合) 一个一个往里装,Map 一对一对往里装. ...

  2. mongodb的安装及配置安装服务

    1. 安装mongodb数据库 mongodb官方网址:https://www.mongodb.org 安装好之后的步奏: 第一步:规划你的安装目录和数据库文件的存储路径,我打算将Mongo的程序文件 ...

  3. ETH Dapp 体验报告

    Dapp 体验报告 Dapp是分散式的应用程序.DApp运行在去中心化的网络上,也就是区块链网络中.网络中不存在中心化的节点可以完整的控制DApp. 必须依赖合约部署,没有一个中心化的服务器托管. 对 ...

  4. js数组遍历的常用的几种方法以及差异和性能优化

    <script type="text/javascript"> /*对比: 1.map速度比foreach快 2.map会返回一个新数组,不对原数组产生影响,forea ...

  5. 洛谷 P2153 [SDOI2009]晨跑

    题目描述 Elaxia最近迷恋上了空手道,他为自己设定了一套健身计划,比如俯卧撑.仰卧起坐等 等,不过到目前为止,他坚持下来的只有晨跑. 现在给出一张学校附近的地图,这张地图中包含N个十字路口和M条街 ...

  6. Kali 2017.3开启VNC远程桌面登录

    通过启用屏幕共享来开启远程桌面登录,开启后需要关闭encryption,否则会出现无法连接的情况.关闭encryption可以使用系统配置工具dconf来完成.所以先安装dconf-editor. 更 ...

  7. zabbix告警邮件、短信发送错误快速排查方法

    zabbix告警邮件.短信发送错误快速排查方法 背景 zabbix告警邮件.短信经常有同事反馈发送错误的情况,这个问题排查的角度很多,那么最快捷的角度是什么呢? 在我看来,最快的角度就是判断这个告警邮 ...

  8. 读懂CommonJS的模块加载

    叨叨一会CommonJS Common这个英文单词的意思,相信大家都认识,我记得有一个词组common knowledge是常识的意思,那么CommonJS是不是也是类似于常识性的,大家都理解的意思呢 ...

  9. babel实践

    现在的主流浏览器还没有完全兼容ES6的语法,如ie11就不支持箭头函数. 使用过es6的人都知道,es6更加简洁和强大,可是使用es6写出来的代码并不能得到所有主流js引擎的支持,针对这一点,一个解决 ...

  10. cetos7 安装telnet

    先执行命令 rpm -qa | grep telnet rpm -qa | grep telnet-server rpm -qa | grep xinetd 如果返回空白就是没有安装 yum inst ...