zoukankan      html  css  js  c++  java
  • Django学习之

    学习记录参考:
    讲师博客: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})
    View Code
  • 相关阅读:
    数据库创建标量值函数
    大并发大数据量请求的处理方法
    模态对话框 bootstrap-modal.js
    创建测试表,批量插入数据的存储过程,分页存储过程
    android:强大的图片下载和缓存库Picasso
    压缩图片链接
    Css3:transform变形
    css中 padding属性的数值赋予顺序为
    Css3颜色值RGBA得表示方式
    css3 box-shadow让我们实现图层阴影效果
  • 原文地址:https://www.cnblogs.com/zy6103/p/7550850.html
Copyright © 2011-2022 走看看