day19 django继续
上节回顾
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继续的更多相关文章
- Day19 Django之Form表单验证、CSRF、Cookie、Session和Model操作
一.Form表单验证 用于做用户提交数据的验证1.自定义规则 a.自定义规则(类,字段名==html中的name值)b.数据提交-规则进行匹配代码如下: """day19 ...
- Python学习-day19 django基础篇
Python的WEB框架有Django.Tornado.Flask 等多种,Django相较与其他WEB框架其优势为:大而全,框架本身集成了ORM.模型绑定.模板引擎.缓存.Session等诸多功能. ...
- Day19 Django
老师代码博客: http://www.cnblogs.com/yuanchenqi/articles/7552333.html 上节内容回顾: class Book(models.Model): ti ...
- Python学习路程day19
Python之路,Day19 - Django 进阶 本节内容 自定义template tags 中间件 CRSF 权限管理 分页 Django分页 https://docs.djangoproj ...
- 创建Django工程-Day19
1. 新建一个day19的工程和app01. 2. 新建templates和static的文件夹. 3. 去settings.py中去做配置. 1)注释掉csrf 2)配置模板路径 'DIRS': [ ...
- python_way day19 HTML-day5 (form表单验证,CSRF,cookie,session,缓存)
python-way day19 1. dJango的form表单验证 2.CSRF 跨站请求伪造 3.cookie,session 4.缓存 一,django表单验证功能 1.django验证基础: ...
- Python之路,Day19 - CMDB、CMDB、CMDB
Python之路,Day19 - CMDB.CMDB.CMDB 本节内容 浅谈ITIL CMDB介绍 Django自定义用户认证 Restful 规范 资产管理功能开发 浅谈ITIL TIL即IT ...
- Django学习-7-ORM操作
select * from tb where id > 1 # 对应关系 models.tb.objects.filter(1id__gt=) models.tb. ...
- Django基础--2
一.路由系统 URL 1.模板语言循环字典 1.简单的字典循环 <ul> {% for i in user_dict %} <li>{{ i }}</li> {% ...
随机推荐
- Java获取系统时间少了八个小时
Java获取系统时间少了八个小时 今天忽然遇到需要获取当前时间的问题,我向来谨慎,先测试获取到的系统时间是否正确,结果竟然发现少了八个小时,晕死了,记得之前在页面用javascript获取过当前时间, ...
- 2019-10-11-VisualStudio-配置多进程调试快捷键启动项目
title author date CreateTime categories VisualStudio 配置多进程调试快捷键启动项目 lindexi 2019-10-11 15:33:32 +080 ...
- mybatis学习:mybatis的环境搭建与入门
一.mybatis的概述: mybatis是一个持久层框架,用java编写 它封装了jdbc操作的很多细节,使开发者只需要关注sql语句本身,而无需关注注册驱动,创建连接登繁杂过程 它使用了ORM思想 ...
- T2487 公交司机(搜索题)(小L的一生)
https://www.luogu.org/problem/show?pid=T2487 题目背景 小L那没出息的儿子当上了一个公交司机. 题目描述 每个司机都有一个牌子,牌子的正面标出了这个司机所开 ...
- 【python之路38】Python正则表达式匹配反斜杠“\”
一.引入 在学习了Python特殊字符和原始字符串之后,我觉得答案应该是这样的: 1)普通字符串:'\\'2)原始字符串:r'\'但事实上在提取诸如“3\8”反斜杠之前的数字时,我屡次碰壁,始终得不到 ...
- iBaties对比hibernate
翻译至一篇2008年的文章(http://www.javaworld.com/article/2077875/open-source-tools/ibatis--hibernate--and-jpa- ...
- zoj 1001 python起步
/*赶角还是挺好的....*/ import sys for line in sys.stdin: a=line.split() print int(a[0])+int(a[1])
- mysql创建数据库指定utf8编码
CREATE DATABASE IF NOT EXISTS dbname DEFAULT CHARSET utf8;
- java-日期类
一 显示系统时间 package cn.itcast.api.a.date; import java.text.DateFormat; import java.util.Date; public cl ...
- day37 10-SH整合的案例练习
<set name="orders" cascade="delete"> 如果没有在Customer.hbm.xml中配置级联删除,删除客户的时候默 ...