zoukankan      html  css  js  c++  java
  • 【02】Django框架:模型与站点

    一、设计模型

    1.创建应用

      在一个项目中可以创建一到多个应用,每个应用进行一种业务处理。
      创建应用的命令:

    python manage.py startapp 应用名

    2.定义模型类

      ①打开models.py文件,定义模型类。
      ②引入包

    from django.db import models

      ③模型类继承自models.Model类。
      ④说明:不需要定义主键列,在生成时会自动添加,并且值为自动增长。
      ⑤当输出对象时,会调用对象的str方法。

    3.生成数据表

      1) 激活模型

        编辑settings.py文件,将应用加入到installed_apps中应用列表。

      2) 生成迁移文件

        根据模型类生成sql语句。

    python manage.py makemigrations

        迁移文件被生成到应用的migrations目录。
      3) 迁移文件

    python manage.py migrate

      4) 执行迁移

        执行sql语句生成数据表。

    4.测试数据操作

      进入python shell,进行简单的模型API练习

    python manage.py shell

    二、管理站点

    1.服务器

      ①运行如下命令可以开启服务器

    python manage.py runserver ip:port

      ②可以不写ip,默认端口为8000
      ③这是一个纯python编写的轻量级web服务器,仅在开发阶段使用

    python manage.py runserver 8080

      ④打开浏览器,输入网址127.0.0.1:8000可以打开默认页面
      ⑤如果修改文件不需要重启服务器,如果增删文件需要重启服务器
      ⑥通过ctrl+c停止服务器

    2.管理操作

      站点分为内容发布和公共访问两部分,内容发布的部分负责添加、修改、删除内容,开发这些重复的功能是一件单调乏味、缺乏创造力的工作。为此,Django根据定义的模型类完全自动地生成管理模块。

    3.使用django的管理

      ①创建一个管理员用户,按提示输入用户名、邮箱、密码。

    python manage.py createsuperuser

      ②启动服务器,通过127.0.0.1:8000/admin访问,输入上面创建的用户名、密码完成登录。
      ③进入管理站点,默认可以对groups、users进行管理。

    4.管理界面本地化

      ①编辑settings.py文件,设置编码、时区 

    LANGUAGE_CODE = 'zh-hans'
    TIME_ZONE = 'Asia/Shanghai'

      ②向admin注册应用的模型
        打开应用下admin.py文件,注册模型

    from django.contrib import admin
    from models import 应用
    
    admin.site.register(应用, 应用管理器)
    @admin.register(应用)

      刷新管理页面,可以对数据进行增删改查操作
      问题:如果在str方法中返回中文,在修改和添加时会报ascii的错误
      解决:在str()方法中,将字符串末尾添加.encode('utf-8')

    5.自定义管理页面

      Django提供了admin.ModelAdmin类,通过定义ModelAdmin的子类,来定义模型在Admin界面的显示方式。

    class QuestionAdmin(admin.ModelAdmin):
        ...
    admin.site.register(Question, QuestionAdmin)

      1) 列表页属性

        ①list_display:显示字段,可以点击列头进行排序

    list_display = ['pk', 'btitle', 'bpub_date']

        ②list_filter:过滤字段,过滤框会出现在右侧   

    list_filter = ['btitle']

        ③search_fields:搜索字段,搜索框会出现在上侧

    search_fields = ['btitle']

        ④list_per_page:分页,分页框会出现在下侧   

    list_per_page = 10

      2) 添加、修改页属性

        ①fields:属性的先后顺序

    fields = ['bpub_date', 'btitle']

        ②fieldsets:属性分组

    fieldsets = [
        ('basic',{'fields': ['btitle']}),
        ('more', {'fields': ['bpub_date']}),
    ]
  • 相关阅读:
    单步调试及回滚测试
    程序员的自我修养阅读笔记03
    第八周总结
    NABCD项目分析
    程序员的自我修养阅读笔记02
    第七周总结
    程序员的自我修养阅读笔记01
    第六周总结
    结对地铁开发
    第五周总结
  • 原文地址:https://www.cnblogs.com/djcoder/p/12906242.html
Copyright © 2011-2022 走看看