django学习笔记(一)—— 快速开始

1. 虚拟环境安装django环境(Mac)

  • 创建虚拟环境
    conda create --name django_env python=3.7 # 后面需要加python版本,否则创建的虚拟环境无法使用而且无法通过'conda remove -n name --all'删除,只能在/anaconda3/envs中删除环境

    python3.7使用该版本django有问题,后台添加注册模型实体时报错,具体下面有截图,所有还是趁早使用3.6吧。

  • 删除虚拟环境(如果需要)
    conda remove -n nev_name --all
  • 进入django环境
    conda activate
  • 安装django包
    pip install django==1.8.2

2. 创建项目

django中,项目结构一般为一个项目包含多个应用,一个应用为一个业务模块。以常见的图书和任务关系案例为例:

  • cd ~/Desktop
  • django-admin startproject bookmanager # 创建项目
  • 用pycharm打开桌面上的bookmanager,可以看到项目结构为:
    • django项目结构.png
  • 项目结构说明:
    • manage.py:项目管理文件,通过它管理项目;
    • bookmanager:和项目同名的文目录
    • __ init __.py:空文件,表明bookmanager可以当包使用;
    • settings.py:项目整体配置文件;
    • urls.py:项目的url配置文件;
    • wsgi.py:项目与兼容WSGI的web服务器的入口;
  • cd bookmanager
  • python manage.py startapp book
    • 应用结构.png
  • 应用结构说明:
    • migrations:数据库迁移文件目录;
    • __ init __.py:空文件,表明book可以当包使用;
    • admin.py:网站后台管理使用;
    • models.py:项目数据库操作使用;
    • tests.py:测试使用;
    • views.py:视图文件;
  • 项目中添加应用
    • 添加应用.png
  • 启动项目
    • python manage.py runserver ip:port # 不指定ip:port也可以,默认127.0.0.1:8000
    • 启动成功.png
      成功页面.png

3. 模型设计

django中内嵌了ORM框架,使用步骤:

    1. 在model.py中定义模型类
    1. 迁移
    1. 通过类和对象完成数据增删改查

3.1 定义模型类

在model.py中定义模型类,继承自models.Model类。定义模型类中,主键一般不用定义,会自动添加并设置为自动增长(根据实际使用确认是否自己定义主键)。
定义模型类.png

3.2 迁移

  1. 生成迁移文件:python manage.py makemigrations
  2. 执行迁移:python manage.py migrate
    生成迁移文件前.png
    生成迁移文件成功.png
    生成迁移文件后.png
    0001_initial内容.png

    执行迁移成功.png
    db.sqlite3.png
  • 可以看出默认表名为应用名_类名:book_bookinfo。
    生成迁移文件.png
    生成迁移文件后.png
    0002_heroinfo内容.png
    迁移成功.png
    db.sqlite3.png
  • 注意一对多外键定义在多类中。表中字段名默认为属性名_id。

3.3 shell介绍

  • python manage.py shell # 进入shell窗口
from book.models import BookInfo, HeroInfo
from datetime import date
BookInfo.objects.all()  # 查询图书列表
# 增加图书数据
b = BookInfo()
b.btitle = '西游记'
b.bput_date = date(1990, 1, 1)
b.save()
# 增加人物数据
h = HeroInfo()
h.hname = '孙悟空'
h.hgender = False
h.hcomment = '看我七十二变'
h.hbook = b
h.save()
# 关联查询
b.heroinfo_set.al()

4. 后台管理

    1. 管理界面本地化
    1. 创建管理员
    1. 注册模型类
    1. 自定义管理页面

4.1 管理界面本地化

项目配置文件settings.py中设置:
后台管理界面本地化设置.png

4.2 创建管理员

python manage.py createsuperuser
登陆后台后,没有图书和任务类:

首次登陆后台管理.png

4.3 注册模型类

book下面admin.py中注册模型类:
注册模型类.png

注册后刷新页面:
注册后后台页面.png

点击增加时,报错:
后台管理新增模型时保持.png

查询原因为python3.7版本使用时这里会出问题,坑,换3.6从头走一遍(正好上面的bpub_date也写成了bput_date)。

更换3.6虚拟环境后重新走到这一步,注册的模型可以在此增加删除修改,python自动根据模型类的不同生成不同的表单控件。如:
不同表单控件.png

4.4 自定义管理页面

可以看出默认列表展示只展示一列且很不直观:
默认展示.png

自定义管理页面:

  • admin.py中自定义类,继承自admin.ModelAdmin,属性list_display表示要显示那些属性(必须是属性名);
  • 修改注册模型方法;


    修改注册模型.png
    Snip20190630_69.png

5. 视图

django视图必须有一个参数(一般就叫request),视图必须返回HttpResponse对象。视图定义在view.py中。

5.1 定义视图

定义视图.png

5.2 配置URL

    1. 在应用中定义URLConf(在book下创建urls.py):
      应用中配置url.png
    1. 包含到项目的URLConf中:
      包含到项目中.png

      视图响应结果.png

6. 模板

一般在项目根路径下创建templates文件夹,然后在templates文件夹下创建应用名同名的文件夹,然后创建前端文件。
前端位置.png
    1. settings.py里面配置:
      配置模板路径
    1. 定义模板:
      自定义模板.png
    1. 视图调用模板
      1. 找到模板
      1. 定义上下文
      1. 渲染模板
        模板使用.png

        Snip20190630_82.png
  • 调用模板简写:使用render
    使用render调用模板.png

7. 完整图书人物案例

  • 页面:
    图书列表页.png
    人物信息页.png
    视图.png
    路由.png

    图书列表.png
    人物信息.png
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容