在视图函数里返回的是一个 HttpResponse 类的实例,我们给它传入了一个希望显示在用户浏览器上的字符串.但是我们的博客不可能只显示这么一句话,它有可能会显示很长很长的内容.比如我们发布的博客文章列表,或者一大段的博客文章.我们不能每次都把这些大段大段的内容传给HttpResponse. Django 对这个问题给我们提供了一个很好的解决方案,叫做模板系统.Django 要我们把大段的文本写到一个文件里,然后 Django 自己会去读取这个文件,再把读取到的内容传给 HttpRespons…
上一篇我们已经完成数据库的设计,但是仅仅是python语言,并没有真正创建了数据库表.翻译成数据库语言,真正创建数据库表由django manage.py来实现,这一过程专业术语:迁移数据库 切换到manage.py所在目录,分别执行命令:python manage.py makemigrations , python manage.py migrate 执行python manage.py makemigrations结果 F:\pythoncode\django\workspace\blog…
1上网的流程: 打开浏览器,输入网址(http://zmrenwu.com/) 浏览器根据输入网址,完成以下几件事:1识别服务器地址,2将用户的浏览意图打包成一个http请求,发送给服务器,等待服务器响应请求 服务器接收到请求后,根据请求从数据库查询,取出数据,并将这些数据嵌入到html中,打包成http响应,返回给浏览器 浏览器接收到响应,解读响应,把html文档解析并显示给用户 从上面的流程来看,django就是一个服务器,其主要解决问题:接收浏览器发送的请求,返回响应给浏览器 从而,会产生…
推荐学习博客:http://pythonzh.cn/post/8/ 博客或者web界面向用户展示内容,它需要从某个地方获取博客内容或者web界面内容,才能够展示出来.通常来说:某个地方指的就是数据库 数据库的组织是根据我们的博客需求来设计的, 博客需求:博客初级版本主要包含博客文章,文章会有分类以及标签.一篇文章只能有一个分类,但可以打上很多标签因此,可以设计数据库的形式() 设计数据库组织一张表table 增加另外一个表, 这 3 篇文章的分类和标签都是相同的,这会产生很多重复数据,当数据量很…
drf除了在数据序列化部分简写代码以外,还在视图中提供了简写操作.所以在django原有的django.views.View类基础上,drf封装了多个子类出来提供给我们使用. Django REST framwork 提供的视图的主要作用: 控制序列化器的执行(检验.保存.转换数据) 控制数据库查询的执行 调用请求类和响应类[这两个类也是由drf帮我们再次扩展了一些功能类. 在接下来的例子中我们将是在上一篇:Django Rest Framework_序列化器_Serializer 继续引用其数…
为什么用templates? views.py视图函数是用来写Python代码的,HTML可以被直接硬编码在views.py之中.如下: import datetime def current_time(request): now = datetime.datetime.now() html = "<html><body>It is now %s.</body></html>" % now return HttpResponse(html…
Form简介 在HTTP中,表单(form标签),是用来提交数据的,其action属性说明了其传输数据的方法:如何传.如何接收. 访问网站时,表单可以实现客户端与服务器之间的通信.例如查询,就用到了表单(其属性中,action=get). 再比如说注册与登陆,也是要用到表单的.但这里由于涉及到隐私问题,需要保证数据传输的安全性,因此其传输方法就应当使用post而非get. 总之,对客户端来说,表单就是用来向服务器提交数据的: 而对服务器来说,表单就是你提供给客户端的发送信息的渠道,你需要对用户发…
4.Django pip3 install django C:\Python35\Scripts # 创建Django工程 django-admin startproject [工程名称] mysite - mysite # 对整个程序进行配置 - init - settings # 配置文件 - url # URL对应关系 - wsgi # 遵循WSIG规范,uwsgi + nginx - manage.py # 管理Django程序: - python manage.py - python…
一个视图函数(类),简称视图,是一个简单的Python 函数(类),它接受Web请求并且返回Web响应. 响应可以是一张网页的HTML内容,一个重定向,一个404错误,一个XML文档,或者一张图片. 无论视图本身包含什么逻辑,都要返回响应.代码写在哪里也无所谓,只要它在你当前项目目录下面.除此之外没有更多的要求了——可以说“没有什么神奇的地方”.为了将代码放在某处,大家约定成俗将视图放置在项目(project)或应用程序(app)目录中的名为views.py的文件中. 一个简单的视图 下面是一个…
django管理界面 设计背景 为你的员工或客户生成一个用户添加,修改和删除内容的后台是一项缺乏创造性和乏味的工作.因此,django全自动地根据模型创建后台界面. django产生于一个公众页面和内容发布者页面完全分离的新闻类站点的开发过程中. 站点管理人员使用管理系统来添加新闻.时间和体育时讯等,这些添加的内容被显示在公共页面上.django通过为站点管理人员创建统一的内容编辑界面解决了这个问题. 管理界面不是为了网站的访问者,而是为了管理者准备的. 创建一个管理员账号 首先,我们得创建一个…
part 1 概念 在Django里面,cookie和session都记录了客户端的某种状态,用来跟踪用户访问网站的整个回话. 两者最大的区别是cookie的信息是存放在浏览器客户端的,而session是存放在服务器端的. 两者使用的方式都是request.COOKIES[XXX]和request.session[XXX],其中XXX是您想要取得的东西的key. Cookie--保存在客户端浏览器上的键值对 只要是HTTP协议,就会有COOKIE这个东西; 只要您的浏览器没有禁用Cookie,就…
Python的WEB框架有 Django.Tornado.Flask 等多种 ,Django相较与其他WEB框架其优势为: 大而全,框架本身集成了ORM.模型绑定.模板引擎.缓存.Session等诸多功能. 3.WEB框架 MVC Model     View           Controller 数据库     模板文件        业务处理 MTV Model Template View 数据库 模板文件 业务处理 (对于所有的Web应用,本质上其实就是一个socket服务端,用户的浏…
web 应用设计模式(MTV MVC): MTV: M:models 模型:负责业务数据对象与数据库对象: T:templates 模板:负责如何把数据展示给用户: V:views 视图:负责业务逻辑 MVC: M:models 模型:负责业务数据对象与数据库对象: V:views 视图:负责与用户交互的页面: C:controller:控制器 :接受用户的输入调用模型与视图 web 应用框架——Django: django 2.1文档:https://docs.djangoproject.co…
知识预览 构建一个表单 在Django 中构建一个表单 Django Form 类详解 使用表单模板 回到顶部 构建一个表单 假设你想在你的网站上创建一个简单的表单,以获得用户的名字.你需要类似这样的模板: <form action="/your-name/" method="post"> <label for="your_name">Your name: </label> <input id="…
准备 我们在前面的课程中已经学会了给视图函数加装饰器来判断是用户是否登录,把没有登录的用户请求跳转到登录页面.我们通过给几个特定视图函数加装饰器实现了这个需求.但是以后添加的视图函数可能也需要加上装饰器,这样是不是稍微有点繁琐. 学完今天的内容之后呢,我们就可以用更适宜的方式来实现类似给所有请求都做相同操作的功能了 中间件 中间件介绍 什么是中间件? 官方的说法:中间件是一个用来处理Django的请求和响应的框架级别的钩子.它是一个轻量.低级别的插件系统,用于在全局范围内改变Django的输入和…
Django 常用模块导入记忆 django相关 1. urls相关操作 from django.urls import path, re_path, include from django.urls import reverse // 注意reverse 和另一个reversed区别.前者要明确导入,后者是built-in内置不用导入:两者功能也不一. 2. HttpResponse生成 from django.shortcuts import render, Httpresponse, re…
目录 Django Model 模型 MODEL需要在脑子里记住的基础概念 区分清楚,必须不能混淆的 class Meta 内嵌元数据定义类 简单model创建实例 数据源配置 接着通过models在数据库中创建映射的表 Field class model表示表关系 model.objects 有关model继承 有关通过model进行curd操作 关于FileField 和 ImageField 字段类型类 还有一个UploadedFile 对象,这个对象就是form表单post上来的文件对象…
Form介绍 我们之前在HTML页面中利用form表单向后端提交数据时,都会写一些获取用户输入的标签并且用form标签把它们包起来. 与此同时我们在好多场景下都需要对用户的输入做校验,比如校验用户是否输入,输入的长度和格式等正不正确.如果用户输入的内容有错误就需要在页面上相应的位置显示对应的错误信息.. Django form组件就实现了上面所述的功能. 总结一下,其实form组件的主要功能如下: 生成页面可用的HTML标签 对用户提交的数据进行校验 保留上次输入内容 普通的登录 views.p…
简单模板模式 概念介绍 简单模板模式(Simple template): 通过格式化字符串拼凑出视图避免创建视图时大量节点操作,优化内存开销. 创建模板 在实际的业务中如果我们需要进行前后台交互,或多或少会遇到需要把后台数据,绑定到我们通过js生成的html里,然后再展示到页面上的需求,比如现在我要生成如下样式并展示到页面上. 首先我们肯定会分析这个页面的结构然后去创建相应的节点并在页面中展示,比如像下面这样 //我们可以创建一个模板类的命名空间 var T=T||{}; //我们接着创建一个根…
需求: 真正的首页视图函数,当用户访问我们的博客首页时,他将看到我们发表的博客文章列表,就像 演示项目 里展示的这样.t https://docs.djangoproject.com/en/1.10/howto/static-files/ 编写博客视图函数 从数据库获取文章的标题,将其作为模板变量传递到模板,所以视图函数 # coding=utf8 from django.shortcuts import render from django.http import HttpResponse f…
回顾一下开发流程:配置url, 编写视图函数,编写对应模板 配置URL 首页视图匹配的 URL 去掉域名后,是一个空的字符串.每篇文章的详情有着不同的 URL,因此可以设计文章详情页面URl:<网站域名>/post/文章ID/ 时.下面依照这个规则来绑定 URL 和视图: # coding=utf8 from django.conf.urls import url from .import views app_name = 'blog' urlpatterns = [ url(r"^…
推荐学习博客:http://zmrenwu.com/post/6/ 选择数据库版本(SQLite3) 如果想选择MySQL等版本数据库,请先安装MySQL并且安装python mysql驱动,这里不做描述.可以查看虫师web接口开发与自动化测试page65 选择Python 内置数据库SQLite3 SQLite3 是一个十分轻巧的数据库,它仅有一个文件.你可以看一到项目根目录下多出了一个 db.sqlite3 的文件,这就是 SQLite3 数据库文件,Django 博客的数据都会保存在这个数…
1 进入虚拟环境,安装markdwon  python install markdown 2 修改视图函数detail def detail(request, pk): # get_object_or_404当传入的pk对应的post数据存在时,就会返回post数据否则返回404 # 需要导入 import markdwon post = get_object_or_404(Post, pk=pk) post.body = markdown.markdown(post.body, extensi…
1 如果没有创建超级管理员账号,先要创建python manage.py createsuperuser 2 在admin后台注册模型(如果没有这一步,登录http://127.0.0.1:8000/admin,看到admin用户只能添加用户,没有发表文章的一些功能) blog/admin.py from django.contrib import admin from .models import Post, Category, Tag admin.site.register(Post) ad…
查询(取)数据 >>> Category.objects.all() <QuerySet [<Category: Category object>]> >>> Tag.objects.all() <QuerySet [<Tag: Tag object>]> >>> Post.objects.all() <QuerySet [<Post: Post object>]> >>…
推荐学校django博客:http://pythonzh.cn/post/8/ django app 可以理解为一个文件夹: 里面包含了相关功能的代码.通过manage.py来创建 web app 激活虚拟python环境 进入manage.py所在目录,执行python manage.py startapp blog 可以看到和manage.py同级目录blog 建好文件夹,要告知django这是个应用,修改settings.py…
我们的博客侧边栏有四项内容:最新文章.归档.分类和标签云. 这些内容相对比较固定,且在各个页面都会显示,如果像文章列表或者文章详情一样,从视图函数中获取然后传递给模板,则每个页面对应的视图函数里都要写一段获取这些内容的代码,这会导致很多重复代码. 更好的解决方案:自定义一个模板标签,然后在每个页面的模板导入自定义的模板标签即可,下面整理出自定义标签的流程: 1 创建自定义模板的文件夹 在blog/…
1 修改detail视图函数,渲染文件的时候,增加codehight拓展 post.body = markdown.markdown(post.body, extensions=[ 'markdown.extensions.extra', 'markdown.extensions.codehilite', 'markdown.extensions.toc', ]) 2 安装Pygments 进入虚拟环境, pip install Pygments 3 修改base.html, 增加代码高亮的样式…
目前我们看到的只是模板中预先填充的一些数据,我们得让它显示从数据库中获取的文章数据.下面来稍微改造一下模板: 删除所有article标签,然后添加以下内容,将从数据库读取到的内容填充到模板变量{{ post_list }} {% for post in post_list %} <article class="post post-{{ post.pk }}"> <header class="entry-header"> <h1 clas…
1,创建一个django项目 使用django-admin.py startproject MyDjangoSite 参考这里 2,建立视图 from django.http import HttpResponse def hello(request): return HttpResponse("我的第一个简单的python django项目.") 3,修改urls.py 我们为urlpatterns加上一行: (r‘^hello/$’, hello), 这行被称作URLpattern…