接下来我们要安装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)
趁着加班写到这里吧,明天继续