一、服务器
- 运行如下命令可以开启服务器
python manage.py runserver ip:port
其中,ip:port可以不填,默认端口号为8000
- 服务器成功启动后,提示如下信息
- 端口号可以进行修改
python manage.py runserver 8080
- 打开浏览器,输入网址“127.0.0.1:8000”可以打开默认页面
- 如果修改文件不需要重启服务器,如果增删文件需要重启服务器
- 通过ctrl+Break停止服务器(需在PyCharm的Terminal中输入)
二、管理操作
1、使用django的管理
- 创建一个管理员用户
python manage.py createsuperuser
#按提示以此输入用户名、邮箱、密码(密码不会显示,类似于Linux密码输入)
- 启动服务器,通过“127.0.0.1:8000/admin”访问,输入上面创建的用户名、密码完成登录
- 进入管理站点,默认可以对groups、users进行管理
2、管理界面本地化
- 编辑settings.py文件,设置编码、时区
LANGUAGE_CODE = 'zh-Hans'
TIME_ZONE = 'Asia/Shanghai'
3、向admin注册booktest的模型
- 打开booktest/admin.py文件,注册模型
from django.contrib import admin
from models import BookInfo
admin.site.register(BookInfo)
- 刷新管理页面,可以对BookInfo的数据进行增删改查操作
PS:在PyCharm中可以预先配置服务器,使得调试时可以直接打开网页。请在主工具栏上单击运行/调试配置选择器,然后选择“ Edit Configurations”(或在主菜单上选择Run | Edit Configurations)
然后在界面中勾选Run browser,并填写默认的打开页面(此处默认的是管理界面:http://127.0.0.1:8000/admin)
4、自定义管理页面
- Django提供了admin.ModelAdmin类,可在booktest/admin.py下进行修改
class HeroInfoInline(admin.StackedInline):#TabularInline为表格,StackedInline为列表;均为展现形式
model = HeroInfo
extra = 1#附加无内容条数,也可算待增加条数
class BookAdmin(admin.ModelAdmin):
# 展示方式 UI,显示字段,可以点击列头进行排序
list_display = ['pk', 'btitle', 'bpub_date']
# 过滤UI,过滤字段,过滤框会出现在右侧
list_filter = ['btitle']
# 搜索UI,搜索字段,搜索框会出现在上侧
search_fields = ['btitle']
# 插入BookInfo的时候可以带上Hero子类插入(即关联对象),具体信息看HeroInfoInline的属性
inlines = [HeroInfoInline]
#分页,分页框会出现在下侧
# list_per_page = 10
# 属性的先后顺序(不可与fieldsets 同时使用)
# fields = ['bpub_date', 'btitle']
# 属性分组(不可与fields同时使用)
# fieldsets = [
# ('basic', {'fields': ['btitle']}),
# ('more', {'fields': ['bpub_date']}),
# ]
class HeroAdmin(admin.ModelAdmin):
list_display = ['pk', 'hname', 'hgender', 'hcontent', 'hBook']
search_fields = ['hname']
# 这里把需要的models注册进行 例如 BookInfo 和 HeroInfo 最基本的UI展示
# 如果需要自定义UI就需要写一个继承于admin.ModelAdmin来指定字段编写展示
admin.site.register(BookInfo, BookAdmin)
admin.site.register(HeroInfo, HeroAdmin)
5、布尔值的显示
- 发布性别的显示不是一个直观的结果,可以使用方法进行封装(booktest/models.py->class HeroInfo(models.Model)内添加)
def gender(self):
if self.hgender:
return '男'
else:
return '女'
gender.short_description = '性别'
- 同时,在booktest/admin.py注册中使用gender代替hgender
class HeroInfoAdmin(admin.ModelAdmin):
list_display = ['id', 'hname', 'gender', 'hcontent']