Django与数据库

来源:互联网 发布:数码网络侦探 攻略 编辑:程序博客网 时间:2024/06/13 15:29
1 设置appINSTALLED_APPS = (    'django.contrib.admin',    'django.contrib.auth',    'django.contrib.contenttypes',    'django.contrib.sessions',    'django.contrib.messages',    'django.contrib.staticfiles','blog',)2 首先要创建数据库:create database csvt;3 配置数据库settings:DATABASES = {    'default': {        'ENGINE': 'django.db.backends.mysql',        'NAME':'csvt04','USER':'root','PASSWORD':'791745','HOST':'','PORT':'',    }}4 配置models:创建了一个表blog_employeeclass Employee(models.Model):name = models.CharField(max_length=20)4 同步数据库:自动检测应用里的modelspython manage.py makemigrations python manage.py migrate这步做完后,数据库中的中出现表:mysql> desc blog_employee;+-------+-------------+------+-----+---------+----------------+| Field | Type        | Null | Key | Default | Extra          |+-------+-------------+------+-----+---------+----------------+| id    | int(11)     | NO   | PRI | NULL    | auto_increment || name  | varchar(20) | NO   |     | NULL    |                |+-------+-------------+------+-----+---------+----------------+5 数据添加启动解释器E:\test3\csvt03>python manage.py shell创建字段:方式一:from blog.models import EmployeeEmployeess 'blog.models.Employee'>emp = Employee()employee: Employee object>emp.name = 'Alen'emp.save()方式二:直接在构造函数中用 emp = Employee(name = 'tom')emp.save()方式三:通过管理器直接调用>>> Employee.objects.create(name='zhangzhihao')<Employee: Employee object>查看>>> emps = Employee.objects.all()>>> emps[<Employee: Employee object>, <Employee: Employee object>, <Employee: Employee object>, <Employee: Employee object>]>>> emps[0].nameu'Alen'添加方法:class Employee(models.Model):name = models.CharField(max_length=20)def __unicode__(self):return self.name重新导入查看:>>> from blog.models import Employee>>> emps = Employee.objects.all()>>> emps[<Employee: Alen>, <Employee: tom>, <Employee: zhangzhihao>, <Employee: zhuyun>]6 urls.py文件下添加网页urlpatterns = [    url(r'^admin/', include(admin.site.urls)),url(r'^index/$','blog.views.index'),]7 创建index方法:def index(req):emps = Employee.objects.all()return render_to_response('indextest3.html',{'emps':emps})8 创建模板,将数据库中的数据显示在页面:<!DOCTYPE html><html lang="en"><head>    <meta charset="UTF-8">    <title></title></head><body>{% for emp in emps%}<div>{{forloop.counter}} : {{emp}}</div>{% endfor %}</body></html>mode多对一关系:1 models中新增方法:from django.db import modelsclass Entry(models.Model):name = models.CharField(max_length=30)def __unicode__(self):return self.nameclass Blog(models.Model):name = models.CharField(max_length=30)entry = models.ForeignKey(Entry)def __unicode__(self):return self.name# Create your models here.2 同步数据库查看数据库结果:mysql> describe blog_blog;+----------+-------------+------+-----+---------+----------------+| Field    | Type        | Null | Key | Default | Extra          |+----------+-------------+------+-----+---------+----------------+| id       | int(11)     | NO   | PRI | NULL    | auto_increment || name     | varchar(30) | NO   |     | NULL    |                || entry_id | int(11)     | NO   | MUL | NULL    |                |+----------+-------------+------+-----+---------+----------------+mysql> describe blog_entry;+-------+-------------+------+-----+---------+----------------+| Field | Type        | Null | Key | Default | Extra          |+-------+-------------+------+-----+---------+----------------+| id    | int(11)     | NO   | PRI | NULL    | auto_increment || name  | varchar(30) | NO   |     | NULL    |                |+-------+-------------+------+-----+---------+----------------+3 进入解释器E:\csvt04>python manage.py shellPython 2.7.12 (v2.7.12:d33e0cf91556, Jun 27 2016, 15:19:22) [MSC v.1500 32 bit (Intel)] on win32Type "help", "copyright", "credits" or "license" for more information.(InteractiveConsole)>>> from blog.models import Entry,Blog>>> entry1 = Entry.objects.create(name = 'alen')>>> entry1<Entry: alen>>>> entry2 = Entry.objects.create(name = 'max')>>> entry2<Entry: max>>>> entry3 = Entry.objects.create(name = 'carl')>>> entry3<Entry: carl>>>> blog1 = Blog.objects.create(name = 'alen_blog1',entry = entry1)>>> blog1<Blog: alen_blog1>>>> blog1.entry<Entry: alen>>>> blog1.id1L>>> entry1<Entry: alen>>>> entry1.blog_set<django.db.models.fields.related.RelatedManager object at 0x03A51C70>>>> entry1.blog_set.all()[<Blog: alen_blog1>]>>> blog1.entry_id4L>>> entry1.blog_set.all()[<Blog: alen_blog1>]

原创粉丝点击