上节回顾

django

- 路由系统:url.py

- 视图函数:views.py

- 模板引擎渲染

- HttpResonse(字符串)

- render(request,’index.html’)   渲染html给客户端

- 数据库操作:models.py

一、基本的数据库操作

小例子:实现数据的基本增删改查(CURD)

前戏:

1. 数据库设计

id                 hostname                   ip                 port             status

2.实现功能

a.预备阶段

创建project  :django-admin startproject  mysite

创建app:cd mysite   ----->     python manager.py startapp app01

配置模板路径:settings.py  ----->   TEMPLATE

                    'DIRS': [os.path.join(BASE_DIR, 'templates')]

配置静态文件:settings.py   ----->   STATICFILES

                        STATIC_URL = '/static/'
STATICFILES_DIRS = (
os.path.join(BASE_DIR,'static')
)

b.请求URL----->def

c.views:数据库获取数据

详细步骤如下:

  • 数据库的创建:
    - 先创建类,也就相当于是数据库的表

- 字段:表的列

具体如下:

from django.db import models

class UserInfo(models.Model):
nid = models.AutoField(primary_key=True) #自增主键
username = models.CharField(max_length=32) #最大字符长度创建
pwd = models.CharField(max_length=64)
age = models.IntegerField()

开始生成表:

D:\project\day19>python manage.py makemigrations

D:\project\day19>python manage.py migrate

前提:要注册app的名字(settings.py里注册)

注意事项:

如果连接mysql的话要手动创建数据库

修改settings.py下的database字段:

DATABASES = {
'default': {
'ENGINE': 'django.db.backends.mysql',
'NAME':'dbname',
'USER': 'root',
'PASSWORD': 'xxx',
'HOST': '',
'PORT': '',
}
}

还需要修改__init__.py文件(project下的)

import pymysql
pymysql.install_as_MySQLdb()

url配置:

views配置

models配置:

server.html配置

路由系统

静态路由:

url(r'^add_user$', views.add_user),

动态路由:

url(r'^edit_user_new-(?P<nnid>\d+).html$', views.edit_user),
url(r'^edit_user_new-(?P<nnid>\d+).html$', views.edit_user,name='mmm'),
    {% url 'mmm' nnid=obj.nid %} =====>   edit_user_new-1.html
多项目路由配置:
主urls配置
from django.conf.urls import url
from django.conf.urls import include
from django.contrib import admin
urlpatterns = [
url(r'^app01/',include('app01.urls')),
url(r'^app02/',include('app01.urls')),
url(r'^app03/',include('app01.urls')),
]
 
从urls.py(需要创建)
from django.conf.urls import url
from django.conf.urls import include
from django.contrib import admin
from app03 import views
urlpatterns = [
url(r'^admin/', admin.site.urls),
url(r'^test', views.test),
]

视图函数

获取请求信息:

request.POST

request.GET

request.FILES

request.method

响应结果:

return HttpReponse(..)
        return render(request,'path/a.html',{})
        return redirect('http://www.baidu.com')

Django数据库操作

1. 类   --> 数据库的表
     字段 --> 列
     对象 --> 一行数据
      class UserInfo(models.Model):
          nid = models.AutoField(primary_key=True)
          username = models.CharField(max_length=32)
          pwd = models.CharField(max_length=64)
          age = models.IntegerField()
         
  2. 根据app的models.py生成数据库表
      python manage.py makemigrations
      python manage.py migrate
         
      PS: settings注册app名字
      注意:
          MySQL
              - 手动创建库名
              - settings.py 中配置
                  DATABASES = {
                      'default': {
                      'ENGINE': 'django.db.backends.mysql',
                      'NAME':'dbname',
                      'USER': 'root',
                      'PASSWORD': 'xxx',
                      'HOST': '',
                      'PORT': '',
                      }
                  }
              - Django默认链接MySQL:
                  - MySqlDB
                  - pymysql
                  在配置目录的init.py中:
                      import pymysql
                      pymysql.install_as_MySQLdb()
 
           
  3. 数据库基本操作
      a. 查
          models.tb.objects.all()
          models.tb.objects.filter(nid=1)
          models.tb.objects.filter(nid=1).first()
     
      b. 增
          models.tb.objects.create(...)
         
          obj = models.tb(...)
          obj.save()
      c. 删
          models.tb.objects.all().delete()
          models.tb.objects.filter(nid=1).delete()
      d. 改
          models.tb.objects.all().update(...)
          models.tb.objects.filter(nid=1).update(...)

模板引擎

特殊规则:
        - 1
            {{k1}}
       
        - 2
            {% if a == 123 %}
           
            {% else %}
           
            {% endif %}
       
        - 3
            {% for item in LIST %}
                {{item}}
            {% endfor %}
        - 4
            # 索引:字典.k1     列表.1
           
        - 5.自定义模板方法
            - filter:       在if条件中做条件时
            - simple_tag:   在页面仅显示内容时
           
        - 6. extends
            - 模板的继承
           
        - 7. include
            - 导入公共组件

Cookie

- 是用户浏览器上的一个键值对
        - 设置超时时间
   
    利用cookie可实现:
        - 登录验证
        - 页面显示条数
        - 拖动位置..

两大忌讳:
        - 敏感信息
        - 简单

Session

- 放置在服务器端的键值对
   
    session = {
        'asdfasdfasd': {'username':'hailong'},
        'asdfasdfasdf': {username:'feinikesi'},
    }

day19 django继续的更多相关文章

  1. Day19 Django之Form表单验证、CSRF、Cookie、Session和Model操作

    一.Form表单验证 用于做用户提交数据的验证1.自定义规则 a.自定义规则(类,字段名==html中的name值)b.数据提交-规则进行匹配代码如下: """day19 ...

  2. Python学习-day19 django基础篇

    Python的WEB框架有Django.Tornado.Flask 等多种,Django相较与其他WEB框架其优势为:大而全,框架本身集成了ORM.模型绑定.模板引擎.缓存.Session等诸多功能. ...

  3. Day19 Django

    老师代码博客: http://www.cnblogs.com/yuanchenqi/articles/7552333.html 上节内容回顾: class Book(models.Model): ti ...

  4. Python学习路程day19

    Python之路,Day19 - Django 进阶   本节内容 自定义template tags 中间件 CRSF 权限管理 分页 Django分页 https://docs.djangoproj ...

  5. 创建Django工程-Day19

    1. 新建一个day19的工程和app01. 2. 新建templates和static的文件夹. 3. 去settings.py中去做配置. 1)注释掉csrf 2)配置模板路径 'DIRS': [ ...

  6. python_way day19 HTML-day5 (form表单验证,CSRF,cookie,session,缓存)

    python-way day19 1. dJango的form表单验证 2.CSRF 跨站请求伪造 3.cookie,session 4.缓存 一,django表单验证功能 1.django验证基础: ...

  7. Python之路,Day19 - CMDB、CMDB、CMDB

    Python之路,Day19 - CMDB.CMDB.CMDB   本节内容 浅谈ITIL CMDB介绍 Django自定义用户认证 Restful 规范 资产管理功能开发 浅谈ITIL TIL即IT ...

  8. Django学习-7-ORM操作

    select * from tb where id > 1    # 对应关系     models.tb.objects.filter(1id__gt=)         models.tb. ...

  9. Django基础--2

    一.路由系统 URL 1.模板语言循环字典 1.简单的字典循环 <ul> {% for i in user_dict %} <li>{{ i }}</li> {% ...

随机推荐

  1. 一、初识asyncio协程

    初识asyncio协程 一.基本概念 ​ 要想了解学习协程相关知识要先对以下几个概念先行了解: 阻塞 ​ 阻塞状态是指程序未得到某所需计算资源时的挂起状态,简单说就是程序在等待某个操作未执行完前无法执 ...

  2. Redis 分布式锁进化史

    按:系统架构经过多年演进,现在越来越多的系统采用微服务架构,而说到微服务架构必然牵涉到分布式,以前单体应用加锁是很简单的,但现在分布式系统下加锁就比较难了,我之前曾简单写过一篇文章,关于分布式锁的实现 ...

  3. python生成VOC2007的类库

    VOCAnnotation.py: # -*-coding:utf-8-*- from lxml import etree import os class VOCAnnotation(object): ...

  4. 在rabbitmq操作页面上添加队列、交换器及绑定示图

    1.添加队列 2.添加交换器 3.绑定

  5. TZ_01MyBatis_log4j.propertiies

    # Set root category priority to INFO and its only appender to CONSOLE. #log4j.rootCategory=INFO, CON ...

  6. Thinkphp M方法出错,D方法却可以

    错误回顾: M('Local')->find(); //报错 //错误信息:Table 'test.local' doesn't exist [ SQL语句 ] : SHOW COLUMNS F ...

  7. img标签中的onerror事件

    img标签中有一个onerror事件.是当我引用的src属性获取不到图片或者网络错误导致无法正常显示我src属性的图片时,显示的提示错误图片或者是可以代替的万能图片. 用法: <img src= ...

  8. light oj 1149 Factors and Multiples(二分匹配)

    LightOJ1149 :Factors and Multiples 时间限制:2000MS    内存限制:32768KByte   64位IO格式:%lld & %llu 描述 You w ...

  9. (转载) poj1236 - Network of Schools

    看到一篇挺好的代码,适合初学者,转载自 博主 wangjian8006 原地址:http://blog.csdn.net/wangjian8006/article/details/7888558 题目 ...

  10. Mysql 5.7.17安装后登录mysql的教程方法

    在运行 ./bin/mysqld Cinitialize 初始化数据库时,会生成随机密码,示例: [Note] A temporary password is generated for root@l ...