一、服务器

  • 运行如下命令可以开启服务器
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)

Python更改打印机端口 pycharm端口号修改_字段


然后在界面中勾选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']