Django基本操作流程。傻瓜式操作,十分钟就创建一个功能齐全的Django!

操作流程是根据例程梳理出来的,跟着流程走可以直接创建一个自己的Django项目。
但是流程里面给出的代码段并不是全部,想要更深入的学习最好还要结合例程。
点我下载,提取码:qjd2

例程操作的表单
1.Grade
2.Student

一、MySQL配置:
1.打开服务 - 执行<net start 服务名>
2.进入MySQL - 执行<mysql -u root -p>
3.输入密码
4.创建数据库 - 执行<create database 数据库名>

二、Django基本配置:
1.创建工程 - 执行<django-admin startproject 工程名>
2.创建项目 - 执行<python manage.py startapp 项目名>
3.激活项目 - 修改settings.py中的INSTALLED_APPS

INSTALLED_APPS = [
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',
    项目名,
]

4.配置数据库 - 工程目录下的文件
A.修改__init__.py

import pymysql
pymysql.install_as_MySQLdb()

B.修改settings.py

DATABASES = {
    		'default': {
		        'ENGINE': 'django.db.backends.mysql',
		        'NAME': 数据库名,
		        "USER": "root",
		        "PASSWORD": 密码,
		        "HOST": "localhost",
		        "PORT": "3306",
	    	}
		}

5.创建模型类 - 项目目录models.py文件中

	#类名结尾不用加单词复数s
	class Grade(models.Model):
		gname = models.CharField(max_length = 20)#字符串类型,字符串长度20
		gdate = models.DateTimeField()#时间类型
		ggirlnum = models.IntegerField()#整数类型
		gboynum = models.IntegerField()
		isDelete = models.BooleanField(default = False)#布尔类型,默认值False
		#被实例后显示的信息
		def __str__(self):
			return self.gname

	class Student(models.Model):
		sname = models.CharField(max_length = 20)
		sgender = models.BooleanField(default = True)
		sage = models.IntegerField()
		scontend = models.CharField(max_length = 20)
		isDelete = models.BooleanField(default = False)
		#关联外键
		sgrade = models.ForeignKey("Grade",on_delete = models.CASCADE)

		def __str__(self):
			return self.sname

6.生成迁移文件 - 执行<python manage.py makemigrations>或<python manage.py makemigrations --empty 项目名>
7.执行迁移 - 执行<python manage.py migrate>
8.启动服务器 - 执行<python manage.py runserver ip:port>ip可以不写默认代表本机ip:port端口号默认是8000

三、测试数据库(可选):
1.进入到python shell - 执行<python manage.py shell>
2.引入包

	from 项目名.models import Grade,Student
	from django.utils import timezone
	from datetime import *

3.查询所有数据 - 执行<Grade.objects.all()>
4.创建模型对象实例

	#创建一个班级模型对象
	grade1 = Grade()
	grade1.gname = "python01"
	grade1.gdate = datetime(year = 2019,month = 1,day = 14)#时间类型
	grade1.ggirlnum = 1
	grade1.gboynum = 20
	grade1.isDelete = False
	grade1.save()#添加数据
	#创建一个学生模型对象
	student1 = Student()
	student1.sname = "李大帅01"
	student1.sgender = False
	student1.sage = 10
	student1.scontend = "我是李大帅01"
	student1.sgrade = grade1#关联对象
	student1.save()

5.添加数据 - 执行<grade1.save()>
6.按条件查询 - 执行<grade1.objects.get(id = 1)>
7.修改数据 - 执行<grade1.gname = “python02”>之后再重新添加数据
8.删除数据 - 执行<grade1.delete()>
9.关联对象 - 执行<student1.sgrade = grade1>
10.获得关联对象的集合 - 执行<grade1.Student_set.all()>
11.创建模型对象并同时关联 - 不用.save()添加数据

	student2 = grade1.Student_set.create(sname = u"李大帅02",sgender = True,scontend = u"我是李大帅02",sage = 10)

四.Admin站点管理
1.配置Admin应用(默认已配置) - 工程目录settings.py

INSTALLED_APPS = [
	'django.contrib.admin',
]

2.创建管理员用户 - 执行<python manage.py createsuperuser>依次输入用户名、邮箱、密码
3.进入Admin站点 - 启动服务器后登陆网址
4.修改语言 - 工程目录settings.py

LANGUAGE_CODE = 'zh-Hans'

TIME_ZONE = 'Asia/Shanghai'

5.创建页面管理类 - 项目目录admin.py

	#导入模型类
	from .models import Grade,Student

	class GradeAdmin(admin.ModelAdmin):
		#列表页属性
		list_display = ["id",,"sname","sgender","sage","scontend","isDelete","sgrade"]#显示字段
		list_filter = ["sname"]#过滤字段
		search_fields = ["sname"]#搜索字段
		list_per_page = 5#分页
		#添加、修改页属性,下面两条语句不能共存
		fields = ["sname","sgrade","sage","scontend","isDelete"]#添加页属性排序
		fieldsets = [
			("班级信息",{"fields":["gname","gdate"]}),
			("班级人数",{"fields":["ggirlnum","gboynum"]}),
			("存储状态",{"fields":["isDelete"]}),
		]#添加页,属性分组

6.关联对象同时创建

	class StudentInfo(admin.TabularInline):#admin.StackedInline另一种显示样式
		#同时创建的类
		model = Student
		#同时创建的条目个数
		extra = 2

	class GradeAdmin(admin.ModelAdmin):
		#在原有的类中增加下面这条属性
		#同时创建的模型对象
		inlines = [StudentInfo]

7.布尔值显示

	class StudentAdmin(admin.ModelAdmin):
		#判断要显示的值
		def gender(self):
			if self.sgender == True:
				return "男"
			else:
				return "女"

		#设置字段显示的名称
		gender.short_description = "性别"
		#列表页属性
		list_display = ["pk","sname",gender,"sage","scontend","isDelete","sgrade"]

8.执行动作位置

	class StudentAdmin(admin.ModelAdmin):
		#关闭顶部显示
		actions_on_top = False
		#打开底部系显示
		actions_on_bottom = True

9.注册
A.代码注册

	#第二个为可选参数,使用页面管理功能才需要
	admin.site.register(Student,StudentAdmin)

B.装饰器注册

	@admin.register(Student)
	class StudentAdmin(admin.ModelAdmin):

五.视图
1.定义视图 - 项目目录views.py

	from django.http import HttpResponse
	from .models import Grade,Student#导入模型类

	#request请求体,每个视图函数必须要有一个形参来接受请求体
	#具体使用方法可见:https://docs.djangoproject.com/en/2.1/topics/http/urls/
	def index(request):
		#返回的内容
		return HttpResponse("我是李大帅")

	def detail(request,num):
		return HttpResponse("%d"%num)

	def getGrades(request):
		#取模板数据
		gradesList = Grade.objects.all()
		#将数据传递给模板,"项目名/grades.html"是模块的路径,grades是传到模块的变量名
		return render(request,"app/grades.html",{"grades":gradesList})

	def getstudents(request):
		studentsList = Student.objects.all()
		return render(request,"app/students.html",{"students":studentsList})

	def gradeStudents(request,id):
		#id是urls.py传过来的请求体
		studentsList = Grade.objects.get(id = id).student_set.all()
		return render(request,"app/students.html",{"students":studentsList})

2.配置url
A.修改工程目录urls.py文件

	from django.urls import path,include

	urlpatterns = [
	    path('admin/', admin.site.urls),
	    #转到项目目录下的urls.py文件
	    path('', include("app.urls")),
	]

B.项目目录下创建urls.py文件

	from django.urls import path
	from . import views#导入视图

	urlpatterns = [
		#如果地址与url字符串匹配,就会转到相应的函数
	    path('', views.index),
	    path('<int:num>/', views.detail),#num与函数的形参相对应
	    path('grades/', views.getGrades),
	    path('students/',views.getstudents),
	    path('grades/<int:id>',views.gradeStudents),

六.模板基本使用
1.创建模板 - 在与工程目录同级下创建文件夹./templates/项目名
2.配置模板路径 - 工程目录settings.py

TEMPLATES = [
    'DIRS': [os.path.join(BASE_DIR,"templates")],
]

3.定义模板文件 - templates/项目名/模板名.html
4.模板例程

<body>
	<h1>班级列表</h1>
	<ul>
		{%for grade in grades%}
		<li>
			<a href={{grade.id}}>{{grade.gname}}</a>
		</li>
		{%endfor%}
	</ul>
</body>

注意:流程之间并没有严格的顺序之分,之所以要排列一二三四主要是为了简单。

流程梳理是借鉴凯哥的视频
sunck is good man

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值