上节回顾

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. TZOJ 4021 Ugly Problem(线段树区间子段最大)

    描述 给定一个序列A[0],A[1],…A[N-1],要求找到p0,p1,p2,p3使得A[p0]+A[p0+1]+…+A[p1] + A[p2]+A[p2+1]+…+A[p3]最大(0<=p0 ...

  2. IDEA javax.servlet.http.HttpServletRequest; 不存在 解决方案

    使用idea创建一个web项目,在项目中报HttpServletRequest和HttpServletResponse不存在. 问题原因:idea不会默认引用tomcat的jar包. 解决方法: [注 ...

  3. stream的map用法

    List<String> list = new ArrayList<>();list.add("1");list.add("2");li ...

  4. web前端学习(四)JavaScript学习笔记部分(8)-- JavaScript瀑布流

    index.html <!DOCTYPE html> <html> <head> <meta http-equiv="Content-Type&qu ...

  5. 抓取B站小视频

    抓取B站小视频的代码如下: #请求库import requests #请求头部信息(用户代理)headers={ 'User-Agent':'Mozilla/5.0 (Windows NT 6.1; ...

  6. 利用HttpWebRequest通过POST Json数据在.net后台实现不同平台间的数据传输

    /// <summary> /// 返回JSon数据 /// </summary> /// <param name="JSONData">要处理 ...

  7. opencv4 java 验证码噪点 8邻域降噪

    工程下载地址https://download.csdn.net/download/qq_16596909/11503962 程序运行后,同样会把图片存放在以下路径 首先来看一下原图 二值化后,可以把这 ...

  8. jnhs中国的省市县区邮编坐标mysql数据表

    https://blog.csdn.net/sln2432713617/article/details/79412896 -- 1.之前项目中需要全国的省市区数据,在网上找了很多,发现数据要么不全,要 ...

  9. jnhs-springmvc 请求组合不正确,比如请求路径出现两次

    初学springmvc 向后台传参数,结果发现,一直404 404后没有路径,说明 没有进入controller 仔细一看,请求路径不对,重复出现 页面是这样写的 页面是这样写的 原因是,请求链接和当 ...

  10. Leetcode17.Letter Combinations of a Phone Number电话号码的字母组合

    给定一个仅包含数字 2-9 的字符串,返回所有它能表示的字母组合. 给出数字到字母的映射如下(与电话按键相同).注意 1 不对应任何字母. 示例: 输入:"23" 输出:[&quo ...