上节内容回顾:

1、Django请求生命周期

-> URL对应关系(匹配) -> 视图函数 -> 返回用户字符串

-> URL对应关系(匹配) -> 视图函数 -> 打开一个HTML文件,读取内容

2、创建django projcet

django-admin startproject mysite

..

mysite

mysite

- 配置文件

- url.py

- settings.py

cd mysite

python manage.py startapp cmdb

mysite

mysite

- 配置文件

- url.py

- settings.py

cmdb

- views.py

- admin.py

- models.py # 创建数据库表

3、配置

模板路径

静态文件路径

# CSRF

4、编写程序

a. url.py

/index/    ->   func

b. views.py

def func(request):

# 包含所有的请求数据

...

return HttpResponse('字符串')

return render(request, 'index.html', {''})

retrun redirect('URL')

c. 模板语言

return render(request, 'index.html', {'li': [11,22,33]})

{% for item in li %}

<h1>`item`</h1>

{% endfor %}

***********  索引用点 **********

<h2> `item`.`0 ` </h2>

一、路由系统,URL

1、url(r'^index/', views.index),

url(r'^home/', views.Home.as_view()),

2、url(r'^detail-(\d+).html', views.detail),

3、url(r'^detail-(?P<nid>\d+)-(?P<uid>\d+).html', views.detail)  ## 不根据顺序,根据id

PS:

def detail(request, *args,**kwargs):

pass

实战:

a.

url(r'^detail-(\d+)-(\d+).html', views.detail),

def func(request, nid, uid):

pass

def func(request, *args):

args = (2,9)   元祖

def func(request, *args, **kwargs):

args = (2,9)

b.

url(r'^detail-(?P<nid>\d+)-(?P<uid>\d+).html', views.detail)

def func(request, nid, uid):

pass

def funct(request, **kwargs):

kwargs = {'nid': 1, 'uid': 3}

xiangxi_info = test_list[kwargs['nid']]

def func(request, *args, **kwargs):

args = (2,9)


    4、 name  ##回头再看 没看懂

对URL路由关系进行命名, ***** 以后可以根据此名称生成自己想要的URL *****

url(r'^asdfasdfasdf/', views.index, name='i1'),

url(r'^yug/(\d+)/(\d+)/', views.index, name='i2'),

url(r'^buy/(?P<pid>\d+)/(?P<nid>\d+)/', views.index, name='i3'),

def func(request, *args, **kwargs):

from django.urls import reverse

url1 = reverse('i1')                              # asdfasdfasdf/

url2 = reverse('i2', args=(1,2,))                 # yug/1/2/

url3 = reverse('i3', kwargs={'pid': 1, "nid": 9}) # buy/1/9/

xxx.html

{% url "i1" %}               # asdfasdfasdf/

{% url "i2" 1 2 %}           # yug/1/2/

{% url "i3" pid=1 nid=9 %}   # buy/1/9/

注:

# 当前的URL

request.path_info

5、多级路由

project/urls.py

from django.conf.urls import url,include

from django.contrib import admin

urlpatterns = [

url(r'^cmdb/', include("app01.urls")),

url(r'^monitor/', include("app02.urls")),

]

app01/urls.py

from django.conf.urls import url,include

from django.contrib import admin

from app01 import views

urlpatterns = [

url(r'^login/', views.login),

]

app02/urls.py

from django.conf.urls import url,include

from django.contrib import admin

from app02 import views

urlpatterns = [

url(r'^login/', views.login),

]

6、默认值(欠)

7、命名空间(欠)

二、视图

1、获取用户请求数据

request.GET

request.POST

request.FILES

PS:

GET:获取数据

POST:提交数据

2、checkbox等多选的内容

request.POST.getlist()  ##

3、上传文件

# 上传文件,form标签做特殊设置  <form  enctype="multipart/form-data">

obj = request.FILES.get('fafafa')

obj.name  #名字

file_path = os.path.join("upload",obj.name)

f = open(file_path, mode='wb')

for item in obj.chunks():

f.write(item)

f.close()

4、FBV & CBV

function base view

url.py

index -> 函数名

view.py

def 函数(request):

...

====》

/index/ -> 函数名

/index/ -> 类

====》

建议:两者都用

from django.views  import  View

class  Home(View):

def get(self,request):

print(request.method)

return  render(request,'')

def post(self,request):

return render(request, '')

url(r'^home',Home.as_view())  调用类里面的,如果是get调用get,post调用post

5、装饰器

三、模板


四、ORM操作

select * from tb where id > 1

# 对应关系

models.tb.objects.filter(id__gt=1)

models.tb.objects.filter(id=1)

models.tb.objects.filter(id__lt=1)

创建类

a. 先写类

from django.db import models

# app01_userinfo

class UserInfo(models.Model):

# id列,自增,主键

# 用户名列,字符串类型,指定长度

username = models.CharField(max_length=32)

password = models.CharField(max_length=64)

from django.contrib import admin

from cmdb  import  models

            admin     admin.site.register(models.UserInfo)

b. 注册APP

INSTALLED_APPS = [

'django.contrib.admin',

'django.contrib.auth',

'django.contrib.contenttypes',

'django.contrib.sessions',

'django.contrib.messages',

'django.contrib.staticfiles',

'app01',

]

c. 执行命令

  python manage.py  makemigrations

        python manage.py  migrate

d. ********** 注意 ***********

Django默认使用MySQLdb模块链接MySQL

主动修改为pymysql,在project  同名文件夹下的__init__文件中添加如下代码即可:

import pymysql

pymysql.install_as_MySQLdb()

1. 根据类自动创建数据库表

# app下的models.py

python manage.py  makemigrations

python manage.py  migrate

字段:

字符串类型

数字

时间

二进制

自增    uid = models.AutoField(primary_key=True) 不会再自动生成ID列

字段的参数:

null=True               -> db是否可以为空

default            -> 默认值

primary_key        -> 主键

db_column          -> 列名,更新列名字,

db_index=True          -> 索引   普通索引

unique               -> 唯一索引

unique_for_date    ->

unique_for_month

unique_for_year

auto_now

auto_now_add      -> 创建时,自动生成时间  -> 更新时,自动更新为当前时间

# obj = UserGroup.objects.filter(id=1).update(caption='CEO')

# obj = UserGroup.objects.filter(id=1).first()  ##更新时间用下面这种。

# obj.caption = "CEO"

# obj.save()

choices              -> django admin中显示下拉框  ,  避免连表查询

blank             -> django admin是否可以为空

verbose_name      -> django admin显示字段中文

editable          -> django admin是否可以被编辑

error_messages    -> 错误信息欠

help_text=         -> django admin提示

validators          -> django form ,自定义错误信息(欠)

创建 Django 用户:python manage.py createsuperuser

2. 根据类对数据库表中的数据进行各种操作

一对多:

a. 外检

b.

外键字段_id

c.

models.tb.object.create(name='root', user_group_id=1)

d.

userlist = models.tb.object.all()

for row in userlist:

row.id

row.user_group_id

row.user_group.caption

=================== 作业:用户管理 ====================

1、用户组的增删改查

2、用户增删该查

- 添加必须是对话框

- 删除必须是对话框

- 修改,必须显示默认值

3、比较好看的页面

4、预习:

http://www.cnblogs.com/wupeiqi/articles/5246483.html

本文转自 295631788 51CTO博客,原文链接:http://blog.51cto.com/hequan/1910512,如需转载请自行联系原作者

day19-URL+视图+模板+ORM相关推荐

  1. AspNet MVC与T4,我定制的视图模板

    一. 遇到的问题 文章开头部分想先说一下自己的困惑,在用AspNet MVC时,完成Action的编写,然后添加一个视图,这个时候弹出一个添加视图的选项窗口,如下: 很熟悉吧,继续上面说的,我添加一个 ...

  2. 【7】Django网页视图模板处理

    天下难事必作於易.天下大事必作於细.是以圣人终不为大,故能成其大 --老子<道德经> 本节内容 HTML页面的渲染 使用页面模板 异常处理 超链接路径处理 路由命名空间 1. HTML页面 ...

  3. [Django基础09]HTML视图模板

    1. HTML页面渲染 在之前的章节中,我们使用的视图,都是临时在函数HttpResponse中添加的字符串,这样的数据明显不符合我们网页的需要,一个网页中那么多的文字.图片.视频音频等等数据,如果按 ...

  4. Django来敲门~第一部分【6.2 HTML视图模板】

    天下难事必作於易.天下大事必作於细.是以圣人终不为大,故能成其大 --老子<道德经>http://www.jianshu.com/p/35ecfe5ab5f4 本节内容 HTML页面的渲染 ...

  5. SpringBoot2.0系列(03)---SpringBoot之使用freemark视图模板

    前言 freemarker介绍: FreeMarker是一款模板引擎: 即一种基于模板和要改变的数据, 并用来生成输出文本(HTML网页.电子邮件.配置文件.源代码等)的通用工具. 它不是面向最终用户 ...

  6. SpringBoot2.0系列(2)---SpringBoot之使用Thymeleaf视图模板

    前言 Thymeleaf 是Java服务端的模板引擎,与传统的JSP不同,前者可以使用浏览器直接打开,因为可以忽略掉拓展属性,相当于打开原生页面,给前端人员也带来一定的便利.如果你已经厌倦了JSP+J ...

  7. go html template 数据怎么加减乘除_Go 视图模板篇(五):模板布局和继承

    模板布局与继承 在 Go 模板中,可以结合 define 指令和 template 指令实现模板布局功能. 首先编写一段服务端示例代码: package main import ( "htm ...

  8. Express4.X版本修改默认模板jade为ejs并且试用html为视图模板后缀名

    通过npm安装Express4.x版本之后发现默认的视图模板是jade的,如果想使用ejs模板的话先通过npm安装ejs npm install ejs 然后打开app.js文件,把里面的 app.s ...

  9. PHP - Laravel 视图模板(blade.php) 循环便利

    web.php 路由参数 Route::get('req', function () {// Json 参数$users = [['id'=>1, 'name'=>'test'],['id ...

最新文章

  1. 李飞飞、邓中翰当选美国国家工程院院士
  2. 理解线程池中线程的复用原理
  3. android:layout_gravity=end,Android中 layout_gravity和gravity的区别
  4. 美国服务器百度抓取耗时不稳定,百度或者其他搜索引擎抓取频次快慢的因素,还会受什么有影响?...
  5. 洛谷P1828 香甜的黄油 Sweet Butter
  6. DHCP+VTP(实验讲解+配置)
  7. PS 滤镜算法原理——染色玻璃
  8. Springboot实现销售团队管理系统
  9. 全国火车高铁站及车次数据爬虫(内含100W+数据,免费领取!)
  10. android 转盘菜单,Android实现可点击的幸运大转盘
  11. 数论之费马大定理及怀尔斯的证明
  12. Android中Home键的监听和拦截
  13. [LOCAL] 画画图(结论 + DP + 常数分析) | 错题本
  14. Photoshop 系列:照片调色记录
  15. 向SQL Server数据库中插入日期型数据
  16. CC2530芯片资料
  17. 用计算机算四分位数间距,数据不满足正态分布——如何计算中位数(四分位数间距)...
  18. python学习18
  19. BUUCTF 异性相吸
  20. 基于上下文的推荐系统

热门文章

  1. windows7内存诊断工具有用吗_性能诊断利器 JProfiler 快速入门和实践
  2. 解决纵向滚屏导致的轮播图异常
  3. 江西瑞金计算机网络设计工资多少,瑞金java工资一般多少
  4. 如何修改zblog的css,修改Zblog中的CSS的方法
  5. asscess 一条记录更新数据_一条MySQL更新语句是怎么执行的?
  6. oracle中md5加密解密_Oracle定义DES加密解密及MD5加密函数示例
  7. JAVA计算一年的第几天问题
  8. python的基础是java_Python基础学习
  9. html checkbox 多选 根据数据库来显示选取和未选取,前端框架(2)DIV多选复选框框的封装和MySql数据库存取...
  10. android 7 apk 安装程序,Android安装apk文件并适配Android 7.0详解