Django项目基本流程走通
- 创建Django项目
2. 创建数据库
配置MySQL数据库,python3.X安装的是PyMySQL,Python3 使用 PyMySQL 连接数据库,并实现简单的增删改查
安装PyMySQL : pip install PyMySQL
import pymysql
pymysql.install_as_MySQLdb()
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.mysql',
'NAME': 'sunck',
'USER': 'root',
'PASSWORD': '1212',
'HOST': 'localhost',
'PORT': '3306',
}
}
3. 创建应用
终端下python manage.py startapp myApp
pymysql.version_info = (1, 4, 13, "final", 0)
4. 激活应用
就是将应用配置到项目中
5 定义模型
5.1 概述
有一个数据表,就对应有一个模型
在models.py中定义,要引入models,因为模型类要继承models.Model类
class Grades(models.Model):
gname = models.CharField(max_length=20)
gdate = models.DateField()
ggirlnum = models.IntegerField()
gboynum = models.IntegerField()
isDelete = models.BooleanField(default=False)
class Students(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("Grades")
5.2 在数据库中生成数据表
(1)生成迁移文件
python manage.py makemigrations,在migrations目录生成迁移文件,此时数据库中还没有生成数据表
(2)执行迁移
python manage.py migrate 相当于执行了sql语句创建数据表
5.3 测试
(1)查询所有数据
类名.object.all()
(2)添加数据
grade = Grades()
grade.gname = “python04”;
grade.gdate = datetime(year=2020,month=7,day=15)
grade.save()
(3)删除数据
grade.delete()
(4)关联对象
获得关联对象的集合,对象名.关联的类名小写_set.all() 例如:获取python04班级的所有学生,grade.students_set.all()
需求:创建刘宁,属于python04班级
stu = grade.students_set.create(sname = u’刘宁’, sage = 30)
5.4 启动服务器
python manage.py runserver ip:port
这是一个纯python写的轻量级服务器,仅测试时使用
5.5 站点管理
5.5.1 概述
内容发布 :负责添加、修改、删除内容
公告访问
5.5.2 配置Admin应用
在settings.py文件中的INSTALLED_APPS添加'django.contrib.admin',默认已添加好的
5.5.3 创建管理员用户
python manage.py createsuperuser
http://127.0.0.1:8000/admin/ 进入
汉化
5.5.4 管理数据表
(1)修改admin.py文件
(2)自定义管理界面
from django.contrib import admin
# Register your models here.
from .models import Grades,Students
class GradesAdmin(admin.ModelAdmin):
list_display = ['pk','gname','gdate','ggirlnum','gboynum','isDelete']
admin.site.register(Grades,GradesAdmin)
admin.site.register(Students)
5.5.5 站点界面管理
from django.contrib import admin
# Register your models here.
from .models import Grades,Students
class StudentsInfo(admin.TabularInline):
model = Students
extra = 2
class GradesAdmin(admin.ModelAdmin):
inlines = [StudentsInfo]
# 列表页属性
list_display = ['pk','gname','gdate','ggirlnum','gboynum','isDelete']
list_filter = ['gname']
search_fields = ['gname']
list_per_page = 5
# 添加、修改页属性
# fields = ['ggirlnum','gboynum','isDelete','gname','gdate']
fieldsets = [
("num",{"fields":['ggirlnum','gboynum']}),
("base", {"fields": ['gname','gdate','isDelete']}),
]
admin.site.register(Grades,GradesAdmin)
class StudentsAdmin(admin.ModelAdmin):
def gender(self):
if self.sgender:
return "男"
else:
return "女"
gender.short_description = "性别"
list_display = ['pk', 'sname', 'sage', 'sgender', 'scontend', gender,'isDelete']
list_per_page = 5
admin.site.register(Students,StudentsAdmin)
6. 视图的基本使用
6.1 概述
视图对web 请求进行回应,视图就是一个python函数,在views.py文件中定义
6.2 定义视图
from django.http import HttpResponse
def grades(request):
# 去模板里取数据
gradesList = Grades.objects.all()
# 将数据传递给模板,模板渲染页面,将渲染好的页面返回浏览器
return render(request, 'myApp/grades.html', {"grades": gradesList})
# return HttpResponse("LN is a good man")
6.3 配置url
(1)修改project目录下的urls.py文件
from django.contrib import admin
from django.urls import path,include
urlpatterns = [
path('admin/', admin.site.urls),
path('', include('myApp.urls')),
]
(2)在myApp目录创建1个urls.py文件
from django.conf.urls import url
from django.urls import path
from . import views
urlpatterns = [
path('', views.index),
path('grades/', views.grades),
]
7 模板的基本使用
模板是HTML页面,可以根据视图中传递过来的数据进行填充
7.1 创建模板目录
7.2 配置模板路径
修改settings.py文件
7.3 定义模板
定义模板grades.html
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>班级信息</title>
</head>
<body>
<h1>班级信息列表</h1>
<ul>
{% for grade in grades %}
<li>
<a href="#">{{ grade.gname }}</a>
</li>
{% endfor %}
</ul>
</body>
</html>
定义好模板,视图去模板里取数据,将数据传递给模板,模板渲染页面,将渲染好的页面返回浏览器。
运行得到如下界面: