Admin和Models

二、Models


1.Django Model

每一个Django Model都继承自django.db.models.Model #一个包,不用在意

在Model当中每一个属性attribute都代表一个database field 

# Model.后面的即为属性 

 ex:name=models.CharField(max_length=100)   CharField即为属性

review: python中的类

通过Django Model API可以执行数据库的增删改查, 而不需要写一些数据库的查询语句

2.设置数据库

Django项目建成后, 默认设置了使用SQLite数据库, 在my_blog/my_blog/settings.py中可以查看和修改数据库设置:

DATABASES = {'default': {'ENGINE':'django.db.backends.sqlite3','NAME': os.path.join(BASE_DIR,'db.sqlite3'),    }}

还可以设置其他数据库, 如MySQL, PostgreSQL, 现在为了简单, 使用默认数据库设置

# os.path.join() 将括号里的参数合并成目录

3.创建models

在my_blog/article/models.py下编写如下程序:

其中__str__(self)函数Article对象要怎么表示自己, 一般系统默认使用来表示对象, 通过这个函数可以告诉系统使用title字段来表示这个对象

CharField 用于存储字符串, max_length设置最大长度

TextField 用于存储大量文本

DateTimeField 用于存储时间, auto_now_add设置True表示自动设置对象增加时间

有了这些代码,Django就能够自动完成以下两个功能:

为该应用创建数据库表(CREATE TABLE语句)。

为Question对象和Choice对象创建一个访问数据库的python API。

4.同步数据库

$ python manage.py migrate #命令行运行该命令

因为我们已经执行过该命令会出现如下提示

Operations to perform:

Apply all migrations: admin, contenttypes, sessions, auth

Running migrations:

No migrations to apply.

Your models have changes that arenotyet reflectedina migration,andso won't be applied.

Run 'manage.py makemigrations' to make new migrations, and then re-run 'manage.py migrate' to apply them.

那么现在需要执行下面的命令

$ python manage.py makemigrations #得到如下提示

Migrationsfor'article':0001_initial.py:- Create model Article

这是通过运行makemigrations告诉Django,已经对模型做了一些更改(在这个例子中,你创建了一个新的模型)并且会将这些更改记录为迁移文件

迁移是 Django 如何储存模型的变化(以及您的数据库模式),它们只是磁盘上的文件。如果愿意,你可以阅读这些为新模型建立的文件;这个迁移文件就是polls/migrations/0001_initial.py。不用担心,Django不要求你在每次Django生成迁移文件之后都要阅读这些文件,但是它们被设计成可人为编辑的形式,以便你可以手工稍微修改一下Django的某些具体行为。READ MORE

有一个命令可以运行这些迁移文件并自动管理你的数据库模式 —— 它叫做migrate

现在重新运行以下命令

$ python manage.py migrate#出现如下提示表示操作成功

Operations toperform:Apply allmigrations:auth, sessions, admin, article, contenttypes

Running migrations:Applying article.0001_initial... OK

migrate命令按照app顺序建立或者更新数据库, 将models.py与数据库同步


迁移功能非常强大,可以让你在开发过程中不断修改你的模型而不用删除数据库或者表然后再重新生成一个新的 —— 它专注于升级你的数据库且不丢失数据。我们将在本教程的后续章节对迁移进行深入地讲解,但是现在,请记住实现模型变更的三个步骤:

修改你的模型(在models.py文件中)。

运行pythonmanage.pymakemigrations,为这些修改创建迁移文件

运行pythonmanage.pymigrate,将这些改变更新到数据库中。

5.Django Shell

现在我们进入Django中的交互式shell来进行数据库的增删改查等操作

$ python manage.py shell

Python3.4.2(v3.4.2:ab2c023a9432, Oct52014,20:42:22)

[GCC4.2.1(Apple Inc. build5666) (dot3)] on darwin

Type"help","copyright","credits"or"license"formore information.

(InteractiveConsole)>>>

这里进入Django的shell和python内置的shell是非常类似的



当然还有更多的API, 可以查看官方文档,退出只需要输入quit()

一般系统默认使用<Article: Article object>来表示对象

三、Admin

1.Admin简介

Django有一个优秀的特性, 内置了Django admin后台管理界面, 方便管理者进行添加和删除网站的内容.

2.设置Admin

新建的项目系统已经为我们设置好了后台管理功能

可以在my_blog/my_blog/settings.py中查看

INSTALLED_APPS= (

'django.contrib.admin',#默认添加后台管理功能

'django.contrib.auth',

'django.contrib.contenttypes',

'django.contrib.sessions',

'django.contrib.messages',

'django.contrib.staticfiles',

'article')

同时也已经添加了进入后台管理的url, 可以在my_blog/my_blog/urls.py中查看

# -*- coding: utf-8 -*-

from django.conf.urls import url

from django.contrib import admin

urlpatterns = [# Examples:

# url(r'^$', 'my_blog.views.home', name='home'),

# url(r'^blog/', include('blog.urls')),url(r'^admin/', admin.site.urls),

#可以使用设置好的url进入网站后台]

3.创建超级用户

使用如下命令账号创建超级用户(如果使用了python manage.py syncdb会要求你创建一个超级用户, 该命令已经过时, 不再推荐使用)

$ python manage.py createsuperuser

Username (leave blank touse'andrew_liu'): root

Email address:Password:Password(again):

Superuser created successfully.

输入用户名, 邮箱, 密码就能够创建一个超级用户

启动应用:

$ python manage.py runserverlocalhost:9000

现在可以在浏览器中输入localhost:9000/admin输入账户和密码进入后台管理, 如下:


登陆进入



让poll应用在管理站点中可编辑

但我们的poll应用在哪儿?它没有显示在管理站点的首页面上。

只需要做一件事:我们需要告诉管理站点Question对象要有一个管理界面。

但是你会发现并没有数据库信息的增加和删除, 现在我们在my_blog/article/admin.py中增加代码:

from django.contrib import admin

from article.models import Article

# Register your models here.

admin.site.register(Article)

保存后, 再次刷新页面,localhost:9000/admin


最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 215,012评论 6 497
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 91,628评论 3 389
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 160,653评论 0 350
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 57,485评论 1 288
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 66,574评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,590评论 1 293
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,596评论 3 414
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,340评论 0 270
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,794评论 1 307
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,102评论 2 330
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,276评论 1 344
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,940评论 5 339
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,583评论 3 322
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,201评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,441评论 1 268
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,173评论 2 366
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,136评论 2 352

推荐阅读更多精彩内容