第一节课:Django 定义模型
使用流程:
1.配置settings.py中的DATABASES
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.mysql', #MySQL数据库
'NAME': 'imooc', #数据库名称
'USER':'root', #用户名
'PASSWORD':'root', #密码
'HOST':'', #主机,默认本机
'PORT':'', #端口:默认3306
}
}
2.在models.py中编写相关的类
from __future__ import unicode_literals
from django.db import models
# Create your models here.
class Employee(models.Model):
name = models.CharField(max_length=20)
注:这表示会在数据库中创建一个employee的表,且表中有一个name的字段
3.同步数据库
(1).右键项目–>Django–>Make Migrations–>输入app的名称:如blog:该步骤的用处是在blog下生成相应的migrations包
(2)右键项目–>Django–>Migrate:该步骤的作用是同步模型到数据库上
控制台输出:
Operations to perform:
Apply all migrations: admin, blog, contenttypes, auth, sessions
Running migrations:
Rendering model states... DONE
Applying contenttypes.0001_initial... OK
Applying auth.0001_initial... OK
Applying admin.0001_initial... OK
Applying admin.0002_logentry_remove_auto_add... OK
Applying contenttypes.0002_remove_content_type_name... OK
Applying auth.0002_alter_permission_name_max_length... OK
Applying auth.0003_alter_user_email_max_length... OK
Applying auth.0004_alter_user_username_opts... OK
Applying auth.0005_alter_user_last_login_null... OK
Applying auth.0006_require_contenttypes_0002... OK
Applying auth.0007_alter_validators_add_error_messages... OK
Applying blog.0001_initial... OK
Applying sessions.0001_initial... OK
Finished "F:\Python\Projects\cstv01\manage.py migrate" execution.
最终生成的项目结构和表结构
第二节课–>Django 模型数据操作
1.增加:三种增加记录的方法
def add1(req,name):
employee = Employee()
employee.name = name
employee.save()
return HttpResponse("add1 success:",name)
def add2(req,name):
employee = Employee(name=name)
employee.save()
return HttpResponse("add2 success:",name)
def add3(req,name):
Employee.objects.create(name = name)
return HttpResponse("add2 success:",name)
2.查询所有的记录
def list(req):
employeeList = Employee.objects.all()
return render_to_response('list.html',{'emps':employeeList})
第三节课–>多对多模型
1.models.py文件
from __future__ import unicode_literals
from django.db import models
# Create your models here.
class Author(models.Model):
name = models.CharField(max_length=30)
def __unicode__(self):
return self.name
class Book(models.Model):
name = models.CharField(max_length=30)
authors = models.ManyToManyField(Author)
def __unicode__(self):
return self.name
2.使用代码:
alen = Author.objects.create(name='Alen')
ben = Author.objects.create(name='Ben')
book = Book(name='python')
book.authors.add(alen)
book.authors.add(ben)
book.save()
#显示效果
>>> book.authors.all()
[<Author: Alen>,<Author: Ben>]
>>>book.authors.remove(alen)#可以将Alen删除
[<Author: Ben>]
>>> alen.book_set.all()
[<Book: python>]