《跟老齐学Python Django实战》读后感
1.说一下这本书,讲解的很细致,内容选取足够入门Django。
2.在学习这本书要注意的几点:
<1>如果你想跟着敲这本书的代码必须要安装:Django版本1.10.1(当然也可以玩玩新版本Django2,中间有些部分需要自己goole来解决)和以下内容:
sudo pip3 install django==1.10.1
sudo pip3 install pytz
sudo pip3 install django-password-reset
sudo pip3 install redis
sudo pip3 install Markdown
sudo pip3 install Pillow
sudo pip3 install sorl-thumbnail
sudo pip3 install django-braces
sudo pip3 install awesome-slugify
<2>这本书源码下载地址:https://github.com/qiwsir/DjangoPracticeProject
再说一下源码:如果按照<1>中安装好,导入的包基本上不会有什么问题,因为这个项目就是针对Django1.10开发的。
说基础错误的地方
>1 login.html
源码中
<p style="margin-top:10px">Forgot your password? <a href="{% url 'pwd_reset' %}">reset password</a></p>
</div>
改为如下:
<p style="margin-top:10px">Forgot your password? <a href="{% url 'pwd_reset:password_reset_recover' %}">reset password</a></p>
</div>
>2 这个错误是一个数据库问题的错误:在创建多对一的关系的,需要在Foreign的第二参数中加入on_delete=models.CASCADE 这是主外关系键中的级联删除,也就是当删除主表的数据时候从表中的数据也随着一起删除。
account应用中models
user = models.OneToOneField(User, unique=True, on_delete=models.CASCADE)
user = models.OneToOneField(User, unique=True, on_delete=models.CASCADE)
article应用中的models
user = models.ForeignKey(User, related_name='article_column', on_delete=models.CASCADE)
author = models.ForeignKey(User, related_name="tag", on_delete=models.CASCADE)
blog应用中的models
author = models.ForeignKey(User, related_name='blog_posts', on_delete=models.CASCADE)
course应用中models
user = models.ForeignKey(User, related_name='lesson_user', on_delete=models.CASCADE)
course = models.ForeignKey(Course, related_name='lesson', on_delete=models.CASCADE)
image应用中的models
user = models.ForeignKey(User, related_name="images", on_delete=models.CASCADE)
<3>修改好后运行 python manage.py makemigrations 创建数据表
运行 python manage.py migrate 创建数据库
<4>按照以上修改,源码就可以运行了
Python manage.py runserver
当然,如果你想进入后台管理,就需要自己创建超级管理员
python manage.py createsuperuser
《跟老齐学Python Django实战》读后感的更多相关文章
- 《DevOps软件架构师行动指南》读后感
从软件架构师视角讲解了引入DevOps实践所需要拥有的技术能力,涵盖运维.部署流水线.监控.安全与审计以及质量关注,这是本书一开始内容简介的开头,本书的作者是伦恩·拜斯(Len Bass).英戈·韦伯 ...
- nodejs开发指南读后感
nodejs开发指南读后感 阅读目录 使用nodejs创建http服务器; supervisor的使用及nodejs常见的调式代码命令了解; 了解Node核心模块; ejs模板引擎 Express 理 ...
- DevOps:软件架构师行动指南(文摘)
第一部分 背景 第1章 DevOps是什么 第二部分 部署流水线 第三部分 横切关注点 第四部分 案例研究 第五部分 走向未来
- 2020年DevOps工程师入门指南
DevOps兴起于2010年代,到现在DevOps已经在行业中拥有了一席之地,并在继续发展壮大. 有兴趣成为一名DevOps工程师吗?如果想要成为一名DevOps工程师,需要做到以下五点: 要有开发者 ...
- 5月29日 Java性能调优指南 读后感
并行垃圾收集器 串行垃圾收集器 并发标记清除(CMS)垃圾收集器 Garbage First(G1)垃圾收集器 没有深入的学习G1的原理,只是看了大概的思想; SA工具:待学习
- 敏捷开发、DevOps相关书籍——书单
自己瞎整理的一些书单,都是豆瓣评分比较高的书,可以作为选择的一个参考. 书名 豆瓣链接 持续交付:发布可靠软件的系统方法 https://book.douban.com/subject/6862062 ...
- 有奖试读—Windows PowerShell实战指南(第2版)
为什么要学PowerShell? Windows用户都已习惯于使用图形化界面去完成工作,因为GUI总能轻易地实现很多功能,并且不需要记住很多命令.使得短时间学会一种工具成为可能. 但是不幸的是,GUI ...
- [转载]你所不了解的DevOps
DevOps开发运维训练营 一旦建立了创新的文化,即使那些并非科学家或者工程师的人——诗人.演员.记者——也能以团体的形式,接受科学文化的意义.他们信奉创新文化的概念.他们以促进这种文化的方式投票.他 ...
- 给 DevOps 初学者的入门指南
当我们谈到 DevOps 时,可能讨论的是:流程和管理,运维和自动化,架构和服务,以及文化和组织等等概念.那么,到底什么是"DevOps"呢? 什么是DevOps 随着软件发布迭代 ...
- CI Weekly #3 | 关于微服务、Docker 实践与 DevOps 指南
CI Weekly 围绕『 软件工程效率提升』 进行一系列技术内容分享,包括国内外持续集成.持续交付,持续部署.自动化测试. DevOps 等实践教程.工具与资源,以及一些工程师文化相关的程序员 Ti ...
随机推荐
- C++解析(6):函数参数的扩展
0.目录 1.函数参数的默认值 2.函数默认参数的规则 3.函数占位参数 4.小结 1.函数参数的默认值 C++可以在函数声明时为参数提供一个默认值 当函数调用时没有提供参数的值,则使用默认值 参数的 ...
- 【Revit API】Revit读取当前rvt的所有视图与其名称
1)读取所有视图: public static ViewSet GetAllViews(Document doc) { ViewSet views = new ViewSet(); FilteredE ...
- 在github fork的项目中推送与抓取
github -- fork提交项目:自己的仓库和原仓库进行Git同步的操作. 1. 获取你fork的原仓库的更新过的最新代码:如果没有远程原始分支则需要增加. git remote add upst ...
- 【字符串】KMP字符串匹配
百度百科 Definition \(KMP\)算法是一个字符串匹配算法.他接收两个字符串\(A,B\),返回\(B\)在\(A\)中出现的所有位置. 以下称需要被匹配的串\(A\)为主串,可能在主串中 ...
- jq从数组中删除指定元素(根据自定义条件) 超好用的 $.grep() 方法
转: jQuery.grep() 什么是jQuery.grep()? jQuery.grep()是一个查找满足过滤函数的数组元素的函数.原始数组不受影响,返回值为数组. 用法介绍: 写法: jQuer ...
- struts2 - View页面中获取Action的成员变量
struts2 - View页面中获取Action的成员变量 2016年03月02日 11:04:44 IT男青年 阅读数:1074 View页面中获取Action的成员变量 按照Struts的设 ...
- selenium测试 - open Firefox
环境:Python2.7+selenium3+Firefox47 问题1: 在打开火狐浏览器时报错:‘geckodriver‘ executable needs to be in PATH fro ...
- C++类间转换之dynamic_cast
当在C++的基类与派生类之间转换时,其多态性充分显现出来: 本次只讨论 dynamic_cast 的用法. 在查阅资料后发现百度百科关于 dynamic_cast (以及static_cast ...
- array_uintersect、array_uintersect_assoc、array_uintersect_uassoc 的使用方法
和 array_intersect 类似,只不过 array_uintersect* 系列函数的值比较使用自定义函数: 键的比较,array_uintersect.array_uintersect_a ...
- python学习笔记(六) 函数式编程
一 函数对象 函数同样可以作为对象复制给一个变量,如下: f = abs; print(f(-10)) f = 'abs'; print(f) def add(a,b,f): return f(a) ...