实现步骤:
1、创建工程
2、创建应用stu
3、主路由配置子路由
4、子路由跳转视图处理方法
5、创建模型类
6、生成迁移文件
7、更改数据源mysql
8、执行迁移文件
9、Models.py定义处理映射关系通用添加方法
10、完成路由视图方法
11、前台html编写
12、测试
相关代码
终端执行命令
python manage.py startapp stu
python manage.py makemigrations stu
pip install MySQL-python-1.2.5-cp27-none-win_amd64.whl
python manage.py migrate
主路由
urlpatterns = [
url(r'^admin/', admin.site.urls),
url(r'^stu/', include('stu.urls'))
]子路由
import views
urlpatterns = [
url(r'^$', views.add_view)
]Settings.py
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.mysql',
'NAME': 'python',
'HOST': '127.0.0.1',
'PORT': '3306',
'USER': 'mybatis_ssm',
'PASSWORD': 'xiaoli'
}
}models.py
# -*- coding: utf-8 -*-
from __future__ import unicode_literals
from django.db import models
# Create your models here.
class Clazz(models.Model):
cno = models.AutoField(primary_key=True)
cname = models.CharField(max_length=30)
def __unicode__(self):
return u'Clazz:%s' % self.cname
class Course(models.Model):
course_no = models.AutoField(primary_key=True)
course_name = models.CharField(max_length=30)
def __unicode__(self):
return u'Course:%s' % self.course_name
class Student(models.Model):
sno = models.AutoField(primary_key=True)
sname = models.CharField(max_length=30)
cls = models.ForeignKey(Clazz)
cour = models.ManyToManyField(Course)
def __unicode__(self):
return u'Student:%s' % self.sname
# 根据班级名称获取班级对象
def getCls(cname):
try:
cls = Clazz.objects.get(cname=cname)
except Clazz.DoesNotExist:
cls = Clazz.objects.create(cname=cname)
return cls
# 获取课程对象列表
def getCourseList(*coursenames):
courseList = []
for cn in coursenames:
try:
c = Course.objects.get(course_name=cn)
except Course.DoesNotExist:
c = Course.objects.create(course_name=cn)
courseList.append(c)
return courseList
def registerStu(sname, cname, *coursenames):
# 1.获取班级对象
cls = getCls(cname)
# 2.获取课程对象列表
courseList = getCourseList(*coursenames)
# 3.插入学生表数据
try:
stu = Student.objects.get(sname=sname)
except Student.DoesNotExist:
stu = Student.objects.create(sname=sname, cls=cls)
# 4.插入中间表数据
stu.cour.add(*courseList)
return True
Views.py
# -*- coding: utf-8 -*-
from __future__ import unicode_literals
from django.http import HttpResponse
from django.shortcuts import render
# Create your views here.
from stu.models import *
def add_view(request):
if request.method == 'GET':
return render(request, 'register.html')
else:
# 接收请求参数
sname = request.POST.get('sname', '')
cname = request.POST.get('clsname', '')
coursenames = request.POST.getlist('coursename', [])
# 将数据注册到数据库
flag = registerStu(sname, cname, *coursenames)
if flag:
return HttpResponse('注册成功!')
return HttpResponse('注册失败!')
结果



从截图中可以看出:
学生表里添加了泰迪
班级表中添加了T224
课程表中添加了Java、Python
中间表中有了学生与课程的关联数据
并且泰迪这个学生已经关联了班级表中的id
over......
备案号:湘ICP备19000029号
Copyright © 2018-2019 javaxl晓码阁 版权所有