auth:xiangxianzhang
Date:2018-5-1
Email:550276107@qq.com
GitHub:https://github.com/xxz199539/notebook
1.创建项目
创建app
创建template文件
2.改写项目目录下的setting文件,在以下地方改写代码
INSTALLED_APPS = [
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
'grade',
'stu'
]
TEMPLATES = [
{
'BACKEND': 'django.template.backends.django.DjangoTemplates',
'DIRS': [os.path.join(BASE_DIR,'templates')],
'APP_DIRS': True,
'OPTIONS': {
'context_processors': [
'django.template.context_processors.debug',
'django.template.context_processors.request',
'django.contrib.auth.context_processors.auth',
'django.contrib.messages.context_processors.messages',
],
},
},
]
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.mysql',
'NAME': 'day41',
'USER': 'root',
'PASSWORD': '123456',
'PORT': '3306',
'HOST': 'localhost'
}
}
LANGUAGE_CODE = 'zh-hans'
TIME_ZONE = 'Asia/Shanghai'
STATIC_URL = '/static/'
3.在stu下写model模型
from django.db import models
# Create your models here.
from grade.models import Grade
class Student(modls.Model):
s_name = models.CharField(max_length=20)
s_create_time = models.DateField()
s_opreate_time = models.DateField()
g = models.ForeignKey(Grade)
#创建一个外键,连接到grade
class Meta:
db_table = 'day41_student'
4.在stu下写views方法
from django.core.urlresolvers import reverse
from django.http import HttpResponseRedirect
from django.shortcuts import render
from stu.models import Student
def AllStu(request, g_id):
# stus = Student.objects.filter(g_id=g_id)
#
# return render(request, 'student.html', {'stus': stus})
# 业务逻辑
return HttpResponseRedirect(
reverse('s:reStu', kwargs={'g_id': g_id})
)
def redirectStu(request, g_id):
stus = Student.objects.filter(g_id=g_id)
return render(request, 'student.html', {'stus': stus})
def delStu(request):
stu_id = request.GET.get('stu_id')
Student.objects.filter(id=stu_id).delete()
return HttpResponseRedirect('/g/allgrade/')
def upStu(request,stu_id):
if request.method == 'GET':
return render(request, 'upStu.html')
if request.method == 'POST':
# stu_id = request.GET.get('stu.id')
stu = Student.objects.get(id=stu_id)
stu.g_id = request.POST.get('id')
g_id = stu.g_id
stu.s_name = request.POST.get('name')
stu.s_create_time = request.POST.get('create_time')
stu.s_opreate_time = request.POST.get('opreate_time')
stu.save()
return HttpResponseRedirect(
reverse('s:reStu', kwargs={'g_id': g_id})
)
5.创建urls文件并写入个方法的数据接口
from django.conf.urls import url
from stu import views
urlpatterns = [
url(r'addstudent/', views.addStu),
url(r'allstudent/(\d+)/', views.AllStu, name='alls'),
url(r'redirectStu/(?P<g_id>\d+)/', views.redirectStu, name='reStu'),
url(r'delStu', views.delStu),
url(r'upStu/(\d+)/', views.upStu, name='upStu')
]
6.在grade的modle文件下写入Grade
from django.db import models
class Grade(models.Model):
g_name = models.CharField(max_length=10)
class Meta:
db_table = 'day41_grade'
7.在grade的views写入方法
from django.http import HttpResponseRedirect
from django.shortcuts import render
# Create your views here.
from grade.models import Grade
from stu.models import Student
def AllGrade(request):
gs = Grade.objects.all()
return render(request, 'grade.html', {'gs': gs})
8.在grade下创建urls文件并写入数据接口
from django.conf.urls import url, include
from grade import views
urlpatterns = [
url(r'allgrade/', views.AllGrade),
]
9.创建数据库并实现迁移
在对两个app都编写MVT后就可以创建一个完整的数据库了,在Mavicat的本地数据库目录下新建一个day4_1(项目名称)的数据库即可
10.添加数据
添加数据后在数据库中就会看到相应的数据,而页面将会跳转到所有学生的页面
在所有学生的页面有对学生进行修改或者删除的链接
点击删除后,该条数据将会被删除,数据库中的相应数据相应数据也会被删除
点击修改链接后,将会进入修改页面
对学生信息进行改写后会跳转到一个按g_id分组的数据页面
由上面的两图可以看到他们是以g_id等于2分组的。
另外我们打开grade的显示所有班级的页面(为了偷懒我直接在数据库中添加了班级的数据)
点开2班,我们就会看到g_id等于2的所有学生信息,这是因为我们在创建Student模型的时候创建了外键来链接Grade