上节回顾

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. 移动端自动化测试Appium 从入门到项目实战Python版

    移动端自动化测试Appium 从入门到项目实战Python版  整个课程都看完了,这个课程的分享可以往下看,下面有链接,之前做java开发也做了一些年头,也分享下自己看这个视频的感受,单论单个知识点课 ...

  2. 微信小程序开发(一)

    引自http://www.cnblogs.com/mdnx/p/6004653.html 第一步  (下载开发工具) https://mp.weixin.qq.com/debug/wxadoc/dev ...

  3. 配置android studio环境2

    安装android studio 2.1运行 exe 程序 安装截图 备注 :O(∩_∩)O~等了 ,但是还是失败, 完全安装啊,不影响,可以手动运行安装目录下的 如:D:\Program Files ...

  4. CSS中position和header和overflow和background

    <!DOCTYPE html> <!--CSS中position属性--> <html lang="en"> <head> < ...

  5. JS倒计时-毫秒

    <!DOCTYPE html><html lang="en"> <head> <meta charset="UTF-8" ...

  6. linux 下建立桌面快捷方式

    这段时间从windows转到了Linux,发现桌面上没有快捷方式很不适应,找了好久资料,找到解决方法,记录下来以后备用 1.首先建立一个新文件 ``` vi quick.desktop //后缀为de ...

  7. Mac OS 安装 独立的asio库

    先安装boost,见前文,然后上官网下载不带boost的asio,版本为:asio-1.12.2 cd到下载的库目录,配置 ./configure --with-boost="boost的安 ...

  8. 下载android4.4.2源代码全过程(附已下载的源代码)

    版权声明:本文为博主原创文章,未经博主同意不得转载. https://blog.csdn.net/maosidiaoxian/article/details/36625727 今天在下载andriod ...

  9. 洛谷P1621 集合 [2017年6月计划 数论13]

    P1621 集合 题目描述 现在给你一些连续的整数,它们是从A到B的整数.一开始每个整数都属于各自的集合,然后你需要进行一下的操作: 每次选择两个属于不同集合的整数,如果这两个整数拥有大于等于P的公共 ...

  10. JavaScript 报错 注释