上节回顾

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. Hadoop IO 特性详解(2)【文件校验】

    (本文引用了microheart,ggjucheng的一些资料,在此感谢.charles觉得知识无价,开源共享无价) 这一次我们接着分析文件IO校验的相关代码,看看最底层是如何实现这种大数据集的文件校 ...

  2. 高斯消元和高斯约旦消元 Gauss(-Jordan) Elimination

    高斯消元法,是线性代数中的一个算法,可用来求解线性方程组,并可以求出矩阵的秩,以及求出可逆方阵的逆矩阵. 在讲算法前先介绍些概念 矩阵的初等变换 矩阵的初等变换又分为矩阵的初等行变换和矩阵的初等列变换 ...

  3. Luogu P3459 [POI2007]MEG-Megalopolis(线段树)

    P3459 [POI2007]MEG-Megalopolis 题意 题目描述 Byteotia has been eventually touched by globalisation, and so ...

  4. MySQL 普通注册插入优化。

    普通做法是: 用户通过手机号注册.默认是根据这个手机号去用户表里查询,看有没有这个手机号,有那么就提示已注册.否则就执行注册插入数据库操作.这里其实正常注册流程是两次数据库操作的(查询,插入): 优化 ...

  5. apache https 双向认证

    Https分单向认证和双向认证 单向认证表现形式:网站URL链接为https://xxx.com格式 双向认证表现心事:网站URL链接为https://xxx.com格式,并且需要客户端浏览器安装一个 ...

  6. Hdu 1403(后缀数组)

    题目链接 Longest Common Substring Time Limit: 8000/4000 MS (Java/Others)    Memory Limit: 65536/32768 K ...

  7. ML面试1000题系列(41-50)

    本文总结ML面试常见的问题集 转载来源:https://blog.csdn.net/v_july_v/article/details/78121924 41. #include和#include“fi ...

  8. excel一些常用的函数

    函数分类: 关联匹配类 清洗处理类 逻辑运算类 计算统计类 时间序列类 一.关联匹配类 经常性的,需要的数据不在同一个excel表或同一个excel表不同sheet中,数据太多,copy麻烦也不准确, ...

  9. loadrunner11录制为空的解决办法(win7+chrome最新版本)

    参考:https://www.cnblogs.com/zhang-zhi/archive/2018/09/10/9622605.html loadrunner11在win7中,使用chrome浏览器的 ...

  10. roc.m

    function [tpr,fpr,thresholds] = roc(targets,outputs) %ROC Receiver operating characteristic. % % The ...