视频:django入门与实践 文字:Django个人网站,从开发到部署总结
官网:Django 中文文档
学习目标:学习并了解Django框架
MVC
- MVC框架的核心思想是:解耦 设计高度拓展,向后兼容,低耦合,高内聚(电脑零件模块类比)
- 降低各功能模块之间的耦合性,方便变更,更容易重构代码,最大程度上实现代码的重用
MVT
官网概要
1、Django 无需数据库就可以使用,它提供了 对象关系映射器 通过此技术,你可以使用 Python 代码来描述数据库结构。
2、变量都被双大括号括起来了。 {{ article.headline }}
的意思是“输出 article 的 headline 属性值”。这个“点”还有更多的用途,比如查找字典键值、查找索引和函数调用。可替代 前端可以直接获取render()的字典数据
我们注意到 {{ article.pub_date|date:"F j, Y" }}
使用了 Unix 风格的“管道符”(“|”字符)。这是一个模板过滤器,用于过滤变量值。在这里过滤器将一个 Python datetime 对象转化为指定的格式。可编程
{% for athlete in athlete_list reversed %} #for遍历,反转 ... {% endfor %}
3、上网流程:http请求,http响应
快速入门
python3 -m django --version 看安装版本
准备工作:创建项目 Django-admin startproject myblog(项目名)
启动服务:python manage.py runserver 8080 #仅仅用来测试,不是实际生产环境
项目 VS 应用:项目可以包含很多个应用。应用可以被很多个项目使用。
实践篇:搭建一个实例,命名后别乱改
虚拟环境很重要啊,不然到时都不知道错误在哪!!!
- 创建应用 python manage.py startapp appname 必须与manage.py同级目录,不能与模块名称冲突,创建应用就要添加路径settings.py里面,
- 启动服务器: python3 manage.py runserver [9999] 默认端口可不写
- 应用目录
__init__.py:如上一个__init__.py文件,一般为空
migrations:数据库相关目录
models.py:主要用一个 Python 类来描述数据表。 称为模型(model) 。 运用这个类,你可以通过简单的 Python 的代码来创建、 检索、更新、删除 数据库中的记录而无需写一条又一条的SQL语句。
views.py:包含了页面的业务逻辑。 latest_books()函数叫做视图。核心
tests.py:自动化测试文件,注:后面的页面设计文件,在此目录下创建目录templates,名为XX.html的文件放在此处。
- views.py非常重要,视图文件编写,响应逻辑代码模块导入模块,配置urls,推荐第二种方式 正则匹配页面重启服务器 python3 manage.py runserver
urls高效配置页面,解决冲突,主站点下面副站点,总的urls配置站点名字,应用有自己的urls
函数
path()
具有四个参数,两个必须参数:route
和view
,两个可选参数:kwargs
和name
。主页超级链接设置
templates 三部曲
templates创建在项目 根目录中,其实就是html,有库,修改总设置里面改模板创建Tamplates:
1.在应用的根目录下创建templates目录。2.在Tamplates目录下创建HTML文件。3.在views.py中返回render(渲染)render有三个参数,第一个request,第二个模板(html页面)。第三个支持一个dict类型参数,传递数据到前端。(键值对,键就是前端获取的参数名,就是模板中类似{{}}引用的,值是要传递给前端的数据)(替换的HTML页面)
render(request,'index.html',{'hello':'hello,blog'}) 第二个参数网站,第三个参数前端{{数据}}在blog下创建文件夹templates在这个文件夹下创建html文件 Tamplates有坑,Tamplates新建应用同名文件夹,各自views路径也要改,模板都是INSTALLED_APPS里面templates顺序查找,不同应用使用第一个templates。
编写models 生成数据表
1. python manage.py makemigrations app(准备)2. python manage.py migrate(迁移),自带应用数据也要迁移,项目下面可以看数据语句查看数据:python manage.py sqlmigrate 应用名 文件id:查看sql语句
页面展现数据:后端+前端
后端views,取出数据article = models.Article.objects.get(pk=1) pk类似id的意思 render(request, page, 'article':article){{ 前端用.属性 }}
admin 自动化管理界面,自带的强大的后台管理系统
创建超级用户: python manage.py createsuperuser 接着输入密码,邮箱,用户名 访问admin: lichun li*chun12356 localhost:8000/admin/ 根目录下加admin显示设置 zh_Hans 时间显示:Asia/Shanghai在admin.py中配置app,应该写成 :from .models import Article admin.site.register(Article)
修改默认的admin中名字显示:不返回类对象 在类里边增加方法,def __unicode__(self):return self.title(python2)def __str__(self):return self.title(python3)
完善博客 任何页面都要建立HTML文件
1.主页面(文章标题链接,发表按钮),2.内容页面,3.编写页面
前端模板For循环 {% for xx in xxs %} #非{{ }} {% endfor %}2、博客文章页面:标题+内容+修改链接超链接配置
超链接会用到name(非根目录)编辑页面:标题+内容+提交按钮
post请求的表单需加上 {% csrf_token %}
注意:增加页面就一修改urls
补充内容:
过滤器(替代if-else语句,设置默认值),模板语言,修改变量,显示不同内容,Django shell用途: 1.调试 2.测试未知方法
管理员配置才有界面,别乱登录admin增强后台配置更强大,点击排序,他自己的过滤器(日期筛选)models.py改了别忘记移植
from django.contrib import admin from .models import Article # Register your models here. class ArticleAdmin(admin.ModelAdmin): # 必须字符串 list_display = ('title','content','pub_time') list_filter = ('pub_time',) admin.site.register(Article, ArticleAdmin)
这框架好强大
总结:
完结打卡,谢谢杜秉轩老师,谢谢慕课网