django学习笔记第二日

上节内容回顾:
	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)

	   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}

				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‘),

		#反转生成url
		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标签做特殊设置
		obj = request.FILES.get(‘fafafa‘)
		obj.name
		f = open(obj.name, 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/ -> 类

		====》

		建议:两者都用

	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)

	b. 在views里面导入模块部上效,所以要注册APP

		INSTALLED_APPS = [
			‘django.contrib.admin‘,
			‘django.contrib.auth‘,
			‘django.contrib.contenttypes‘,
			‘django.contrib.sessions‘,
			‘django.contrib.messages‘,
			‘django.contrib.staticfiles‘,
			‘app01‘,
		]
	然后在app的models写完数据类之后需要运行如下命令,创建表
	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

		字段:
			字符串类型

			数字

			时间

			二进制

			自增models.AutoField(primary_key=True)

		字段的参数:
			null               -> db是否可以为空
			default            -> 默认值
			primary_key        -> 主键
			db_column          -> 列名
			db_index           -> 索引
			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中显示下拉框,避免连表查询
			     user_choices = (
				 (1,超级用户),
				 (2,普通用户),
				 (3,低级用户),
				 )
			    user_type_id = models.IntegerField(choices = user_choices,default= 1)
			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

  

原文地址:https://www.cnblogs.com/qiangayz/p/8972791.html

时间: 2024-08-29 11:23:20

django学习笔记第二日的相关文章

Django 学习笔记(七)数据库基本操作(增查改删)

一.前期准备工作,创建数据库以及数据表,详情点击<Django 学习笔记(六)MySQL配置> 1.创建一个项目 2.创建一个应用 3.更改settings.py 4.更改models.py 5.同步数据 二.安装IPython方便debug sudo apt-get install ipython3 安装成功后用python manage.py shell 会自动进入Ipython交互解释器中,没有安装Ipython只有前两行代码,只进入到Python shell 中. Python 3.5

Django学习笔记 Day One

Time:2016年01月01日21:38:55 Description: 从今天开始我开始写我的Django学习笔记,因为网络上太多太杂乱的文章,不成系统,还有就是太多的培训机构讲述的东西过于简单,没有深入讲解Django,算是自己的一个小笔记吧,主要参考的是Django1.8的官方文档,地址:www.djangoproject.com,一家之言,大神勿喷! Content: Day One. First exploration of django? 我们在Web开发过程中,常常会遇到编写重复

Django学习笔记(三)—— 模型 model

疯狂的暑假学习之 Django学习笔记(三)-- 模型 model 参考:<The Django Book> 第5章 1.setting.py 配置 DATABASES = { 'default': { 'ENGINE': 'django.db.backends.', # 用什么数据库管理系统 'NAME': '', # 数据库名称,如果用sqlite,要写完整路径 'USER': '', # 如果用sqlite,这个不用写 'PASSWORD': '', # 如果用sqlite,这个不用写

Django学习笔记(五)—— 表单

疯狂的暑假学习之  Django学习笔记(五)-- 表单 参考:<The Django Book> 第7章 1. HttpRequest对象的信息 request.path                                 除域名以外的请求路径,斜杠开头                      "/hello/" request.get_host()                      主机名                              

django学习笔记

用的windows操作系统,真是蛋疼啊,等赚了钱,我真要买一台苹果或者换个12寸的小本,用ubuntu,所以一下命令都是windows的,真心蛋疼啊,为什么没有自动补完啊 首先,随便下个django. 然后,进入命令行,进入django的文件夹键入如下命令 django>python setup.py install 经过短时间的等待,安装完成. 然后随便建一个文件夹,比如myproject,命令行进入文件夹,然后输入如下命令,一个django项目就算建好了 myproject>django-

Django学习笔记(四)—— Admin

疯狂的暑假学习之  Django学习笔记(四)-- Admin 参考:<The Django Book> 第6章 Django 可以使用admin自动创建管理界面. 1. 配置 django-admin.py startproject 创建的项目,如果没有注解掉默认的配置,python manage.py syncdb 创建用户后,直接 http://xxxxxx/admin 输入密码即可进入. 如果修改了配置文件,保证将 django.contrib.admin 加入setting.py 中

Django 学习笔记之三 数据库输入数据

假设建立了django_blog项目,建立blog的app ,在models.py里面增加了Blog类,同步数据库,并且建立了对应的表.具体的参照Django 学习笔记之二的相关命令. 那么这篇主要介绍往数据库中添加数据,django默认的是sqlite3数据库. 在建立完django_blog项目后,不要忘了把 blog 加入到 settings.py 中的 INSTALLED_APPS 中. 一.同步数据库,创建相应的表 具体的参照Django 学习笔记之二的的同步数据库. 二.数据输入 下

Django学习笔记汇总

1. 学习历程 从学了Python以来,我都一直想着用它来做点什么.从开始用python来写简单的工具脚本,然后再是网络信息抓取程序. 听说可以用Python来做网站,所以我了解了一下web.py与Django.第一次接触Django,由于没有网络方面的基础,所以没弄两下就放弃了. 后来,我研究了一下Python自来的SimpleHTTPServer,然后读懂了CGIHTTPServer,才对Web的实质有了了解. 在这个基础上,我再次重拾Django.这次,终于学会了. 原来它是那么的美妙!

Django学习笔记(二)—— 模板

疯狂的暑假学习之 Django学习笔记(二)-- 模板 参考: <The Django Book> 第四章 一.模板基础知识 1.模板是如何工作的 用 python manage.py shell 启动交互界面(因为manage.py 保存了Django的配置,如果直接python启动交互界面运行下面代码会出错) 输入下面代码 >>> from django import template >>> t = template.Template('My name