进入python 虚拟环境(先创建项目object----然后创建app)
#workon venv #进入python 虚拟环境
创建创建项目object
# django-admin.py startproject www
创建django-admin 登录账户(上章有说明)
# python manage.py createsuperuserUsername
(leave blank to use 'root'): admin
Email address: [email protected]
Password:
Password (again):
Superuser created successfully.
[root@solar HelloWorld]#
创建项目app
#python mange.py startapp booktest
#cd bookptest
(venv)[root@h01 www]# tree booktest/
booktest/
├── admin.py
├── admin.pyc
├── apps.py
├── __init__.py
├── __init__.pyc
├── migrations
│ ├── 0001_initial.py
│ ├── 0001_initial.pyc
│ ├── __init__.py
│ └── __init__.pyc
├── models.py
├── models.pyc
├── tests.py
└── views.py
编辑项目中bookstest model模块
# -*- coding: utf-8 -*-
from __future__ import unicode_literals
from django.db import models
# Create your models here.
class BookInfo(models.Model):#定义类书
btitle=models.CharField(max_length=20)#设置书名称
bpub_date=models.DateTimeField()#日期
def __str__(self):#返回书的名称
return self.btitle
class HeroInfo(models.Model):#定义类英雄
hname=models.CharField(max_length=10)#名字
hgender=models.BooleanField()
hcontent=models.CharField(max_length=1000)
hbook=models.ForeignKey(BookInfo)
在项目中添加app,在主项目中 www的setting文件中添加app 名称
INSTALLED_APPS = [
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
'booktest',
]
注册到admin上,需要在django-admin中显示,在app 中的admin.py中添加
# -*- coding: utf-8 -*-
from __future__ import unicode_literals
from django.contrib import admin
# Register your models here.#将新建的app注册到admin中,将新建的app在admin中显示
from models import BookInfo
admin.site.register(BookInfo)
更新表结构及创建表
python manage.py makemigrations booktest #创建该app的需的表
python manage.py migrate booktest #同步该app上面的表
启动服务
(venv)[root@h01 www]# ls
booktest db.sqlite3 manage.py www
(venv)[root@h01 www]# python manage.py runserver 0.0.0.0:8999
Performing system checks...
System check identified no issues (0 silenced).
November 08, 2017 - 16:06:45
Django version 1.11.2, using settings 'www.settings'
Starting development server at http://0.0.0.0:8999/
Quit the server with CONTROL-C.
默认显示的是英文,需要更改主项目的setting.py文件
LANGUAGE_CODE = 'zh-hans'
TIME_ZONE = 'Asia/Shanghai'
USE_I18N = True
USE_L10N = True
USE_TZ = True
如果添加出现报错(乱码),需要更改返回值的编码app的model
# -*- coding: utf-8 -*-
from __future__ import unicode_literals
from django.db import models
# Create your models here.
class BookInfo(models.Model):
btitle=models.CharField(max_length=20)
bpub_date=models.DateTimeField()
def __str__(self):
return self.btitle.encode('utf-8') #修改的这条
class HeroInfo(models.Model):
hname=models.CharField(max_length=10)
hgender=models.BooleanField()
hcontent=models.CharField(max_length=1000)
hbook=models.ForeignKey(BookInfo)
同理将刚创建的另一个类HeroInfo 也添加到页面上,更改app的admin.py 的配置文件
# -*- coding: utf-8 -*-
from __future__ import unicode_literals
from django.contrib import admin
# Register your models here.#将新建的app注册到admin中,将新建的app在admin中显示
from models import *#导入所有的类
admin.site.register(BookInfo)
admin.site.register(HeroInfo)#添加此项
刷新页面
由于显示的和创建的名称不符
更改app的model.py中的返回值
# -*- coding: utf-8 -*-
from __future__ import unicode_literals
from django.db import models
# Create your models here.
class BookInfo(models.Model):
btitle=models.CharField(max_length=20)
bpub_date=models.DateTimeField()
def __str__(self):
return self.btitle.encode('utf-8')
class HeroInfo(models.Model):
hname=models.CharField(max_length=10)
hgender=models.BooleanField()
hcontent=models.CharField(max_length=1000)
hbook=models.ForeignKey(BookInfo)
def __str__(self): #添加返回值,如添加有乱码如上
return self.hname
刷新页面
自定义后台管理页面django-admin
是在app注册的页面上面修改,app的admin.py 配置文件中添加
# -*- coding: utf-8 -*-
from __future__ import unicode_literals
from django.contrib import admin
# Register your models here.#将新建的app注册到admin中,将新建的app在admin中显示
from models import *
class BookInfoAdmin(admin.ModelAdmin):
list_display = ['id','btitle','bpub_date','bpub_date'] #显示字段
admin.site.register(BookInfo,BookInfoAdmin)#后面跟上上面创建的类说明使用
admin.site.register(HeroInfo)
其他的
# -*- coding: utf-8 -*-
from __future__ import unicode_literals
from django.contrib import admin
# Register your models here.#将新建的app注册到admin中,将新建的app在admin中显示
from models import *
class BookInfoAdmin(admin.ModelAdmin):
list_display = ['id','btitle','bpub_date']#显示字段
list_filter = ['btitle']#过滤
search_fields = ['btitle']#根据什么搜索
list_per_page = 1 #每页放多少条
fieldsets = [#属性分组
('base',{'fields':['btitle']}),
('super',{'fields':['bpub_date']}),
]
admin.site.register(BookInfo,BookInfoAdmin)#后面跟上上面创建的类说明使用
admin.site.register(HeroInfo)