您的位置:首页 > 编程语言 > Go语言

《Django By Example》读书笔记 03

2016-04-21 19:47 393 查看
接下来我们要安装python的一个模块

pip install pytz


关于时区使用的几点想法:

如果你的网站可能有来自其它时区的,可能你要考虑这个问题。都是一个地区的话,还要看服务器是否与用户在一个地区,如果不在,也要考虑。

因此,基本上要考虑服务器时区与用户时区。服务器时区可以配置在系统中,全局生效。而用户时区则与用户相关,可以由用户自已进行设置。

在生成相关时间对象时要加入时区的信息,并在输出时进行合适的转换。

而pytz提供了创建某个时区对象的方法

在settings.py的 INSTALLED_APPS 设置中添加blog. 如下所示:

INSTALLED_APPS = (
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
'blog',
)


创建和应用迁移

在数据库中创建一个表



在blog的migrations文件夹,Django创建了0001_initial.py

在cmd输入

python manage.py sqlmigrate blog 0001

会看到输出如下信息

BEGIN;
CREATE TABLE "blog_post" ("id" integer NOT NULL PRIMARY KEY
AUTOINCREMENT, "title" varchar(250) NOT NULL, "slug" varchar(250) NOT
NULL, "body" text NOT NULL, "publish" datetime NOT NULL, "created"
datetime NOT NULL, "updated" datetime NOT NULL, "status" varchar(10)
NOT NULL, "author_id" integer NOT NULL REFERENCES "auth_user" ("id"));
CREATE INDEX "blog_post_2dbcba41" ON "blog_post" ("slug");
CREATE INDEX "blog_post_4f331e2f" ON "blog_post" ("author_id");
COMMIT;


接下来同步一下数据库,在cmd运行

python manage.py migrate


会看到以下输出:

Operations to perform:
Apply all migrations: auth, contenttypes, admin, blog, sessions
Running migrations:
Rendering model states... DONE
Applying blog.0001_initial... OK


为models创建一个administration site

django.contrib.admin 已经包含在INSTALLED_APPS

创建一个超级用户,运行

python manage.py createsuperuser


根据提示输入用户名密码等信息

Username (leave blank to use 'hunter'): whywhom
Email address: whywhom@163.com
Password:
Password (again):
Superuser created successfully.


Django 网站管理界面可以通过运行

python manage.py runserver


然后打开站点:

http://127.0.0.1:8000/admin/

可以看到



登录后



group和user模块是Django的django.contrib.auth授权的一部分

点击user可以看到刚才创建的登录用户

将自己的models加入到管理站点中

编辑admin.py

输入以下代码

from django.contrib import admin
from .models import Post
admin.site.register(Post)


在浏览器reload一下网站



在post右边点击add

可以看到Django为自己添加的models动态生成的页面



编辑表单点击save



这里可以自定义模块的显示

修改admin.py,如下所示

from django.contrib import admin
from .models import Post
class PostAdmin(admin.ModelAdmin):
list_display = ('title', 'slug', 'author', 'publish',
'status')
admin.site.register(Post, PostAdmin)


进一步自定义

from django.contrib import admin
from .models import Post
class PostAdmin(admin.ModelAdmin):
list_display = ('title', 'slug', 'author', 'publish',
'status')
list_filter = ('status', 'created', 'publish', 'author')
search_fields = ('title', 'body')
prepopulated_fields = {'slug': ('title',)}
raw_id_fields = ('author',)
date_hierarchy = 'publish'
ordering = ['status', 'publish']
admin.site.register(Post, PostAdmin)




趁着加班写到这里吧,明天继续
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: