实现步骤:
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晓码阁 版权所有