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
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 220,367评论 6 512
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 93,959评论 3 396
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 166,750评论 0 357
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 59,226评论 1 295
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 68,252评论 6 397
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,975评论 1 308
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,592评论 3 420
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 39,497评论 0 276
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 46,027评论 1 319
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 38,147评论 3 340
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 40,274评论 1 352
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,953评论 5 347
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,623评论 3 331
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 32,143评论 0 23
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 33,260评论 1 272
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 48,607评论 3 375
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 45,271评论 2 358

推荐阅读更多精彩内容