django实战总结】的更多相关文章

<跟老齐学Python Django实战>作为市面上少有的Django通俗实战书籍,给了我学习Django很大的帮助.作为一名新入门的菜鸟,全书我重复练习了至少三遍,每次都有新的收获. 前两次我选用了跟原书作者一致的Python和Django版本,只要保证代码没“抄错”,基本不会有什么问题.第三次使用了更新的"Django==2.1.1",在路由urls.py配置中发现了不少问题,并一一改正. 写此博文,纪念自己的学习成果,并向作者qi sir致敬! 我的环境.版本:Cen…
需求: 实现请假单的电子审批 1. 支持国际化 2. 支持模型级别的访问记录 here we go: 这里会写一系列的文章,来记录我实战的过程,由于接触django没多久,难免有疏漏之处,望拍砖不要太重. ==========后记================= 发现cnblog似乎有些鞭长莫及.因为文档编排的关系,最后用word记录了.可以这里查看全文:http://download.csdn.net/detail/lion_awake/7859773 (建议下载查看,然后评论返回积分)…
因为因特网HTTP协议的特性,每一次来自于用户浏览器的请求(request)都是无状态的.独立的. 通俗地说,就是无法保存用户状态,后台服务器根本就不知道当前请求和以前及以后请求是否来自同一用户.对于静态网站,这可能不是个问题,而对于动态网站,尤其是京东.天猫.银行等购物或金融网站,无法识别用户并保持用户状态是致命的,根本就无法提供服务. 你可以尝试将浏览器的cookie功能关闭,你会发现将无法在京东登录和购物. 为了实现连接状态的保持功能,网站会通过用户的浏览器在用户机器内被限定的硬盘位置中写…
基本框架搭建好了后,我们就要开始丰富页面内容了.最起码,得有一个用户登录的表单不是么?(注册的事情我们先放一边.) 一. 原生HTML页面 删除原来的login.html文件中的内容,写入下面的代码: <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>登录</title> </head> <…
该实战教程基于菜鸟教程,菜鸟教程可参考:http://www.runoob.com/django/django-template.html 模板语法,每个框架都有其支持的模板语法,Django的模板语法在我看来与vue.js倒有一些相似处 ,比如它们的模板语法中参数为{{parm}}. 本篇所用到的例子,仍然基于实战(一) 在HelloWorld(该文件夹有urls.py)目录下新增templates文件夹,在templates新增hello.html <html> <head>…
从这天开始我们需要用到前端源码,需要的朋友可以进行小额打赏(15元),打赏二维码在博客的右侧,打赏后可以凭截图联系463951510@qq.com,博主收到邮件后会立即回复发送所有源码素材,实战过程中遇到问题也可以互相探讨 1.把首页文件index.html复制到项目的templates目录下 2.在项目根目录下创建static文件夹,用于存放静态文件 3.把css\images\img\js目录复制到static目录下 4.编辑urls.py,添加一条url到首页,其中需要导入一个view,表…
项目说明 该电商项目类似于京东商城,主要模块有验证.用户.第三方登录.首页广告.商品.购物车.订单.支付以及后台管理系统. 项目开发模式采用前后端不分离的模式,为了提高搜索引擎排名,页面整体刷新采用jinja2模板引擎实现,局部刷新采用vue.js实现. 项目运行机制如下: 项目搭建 工程创建 项目使用码云进行源代码版本控制,在码云创建好后直接克隆到本地即可,然后在项目根目录下执行virtualenv venv创建虚拟环境,source venv/bin/activat激活虚拟环境后,安装dja…
创建用户APP 整个项目会存在多个应用,需要存放在一个单独的文件包了,所以新建一个apps目录,管理所有子应用. 在apps包目录下穿件users应用 python ../../manage.py startapp users 这个时候呢,需要我们将新创建的应用注册到django里,可是这里我们修改了应用的管理目录,与默认的方式不同,如果还按照之前的方式注册APP肯定会报错,这个时候我们可以先查看一下django的导包路径,在dev文件中输入 print(sys.path()) # 输出包的所有…
设计到的前端知识 项目的前端页面使用vue来实现局部刷新,通过数据的双向绑定实现与用户的交互,下面来看一下需求,在用户输入内容后,前端需要做一些简单的规则校验,我们希望在在用户输入后能够实时检测,如果有错误能够在输入框的下方显示出来. <li> <label>用户名:</label> <input type="text" name="username" id="user_name"> <spa…
系统:win10 python版本:python 3.5 工具: pyCharm 3.4 professional 源码来源:https://github.com/ouzhigang/django-ozgweb 步骤1   下载,解压源码   使用pyCharm Open项目: 然后在File--> Settings里面下载安装第三方的插件和库: 步骤2 打开 runn --> Edit Configurations ,选择Django Server 选择或者新建服务器,调整端口等信息; 步骤…
当大家打开一个网站时,第一步做什么?大部分一定是先登录吧,所以我们就从用户认证开始. 打开用户认证 Django本身已经提供了用户认证模块,使用它可以大大简化用户认证模块的开发,默认情况下,用户认证模块是打开的,可以通过以下步骤确认用户模块是否打开(settings.py): 1.确保 MIDDLEWARE_CLASSES 中包含 'django.contrib.sessions.middleware.SessionMiddleware'. 2.确认 INSTALLED_APPS 中有 'dja…
当用户登录成功后,首先看到的是他自己之前提交的任务列表,本篇将实现该页面. 视图(views.py)里定义如下: from django.core.paginator import Paginator, PageNotAnInteger, EmptyPage @login_required def tasklist(request): username=request.user.username if len(Dba.objects.filter(username=username)) == 0…
今天来实现用户登录模块 首先,我们创建一个表单(forms.py): from django import forms from django.contrib.auth.models import User from bootstrap_toolkit.widgets import BootstrapDateInput, BootstrapTextInput, BootstrapUneditableInput class LoginForm(forms.Form): username = for…
直接上代码 视图: from django.shortcuts import render,render_to_response, redirect from submit import models # Create your views here. def submit(request): if request.method == "POST": username = request.POST.get("username", None) password = r…
模板层 ​ {{}} 变量相关 ​ {%%} 逻辑相关 ​ 前端获取容器类型的数据统一使用 句点符(.) ​ 两种给模板传递值的方式 return render(request,'index.html',{'name':'jason','age':'18'}) return render(request, 'index.html', locals()) # 这个方法虽然好用,但是会把后端函数所有的变量传给前端 过滤器 ​ 取消转义(**): ​ 前端: ​ |safe 取消转义 ​ 后端: ​…
视图层(views.py) django必会三板斧 HttpResponse >>> 返回字符串 render >>> 支持模板语法,渲染页面,并返回给前端 redirect >>> 重定向(即可以重定向到别人的网址,也可以重定向到自己路由) django返回的数据都是HttpResponse对象 JsonResponse(返回json格式的数据)  如何将json打包的汉字不被编译 用到了一个技术点: from django.http import…
路由层 如何给网页添加首页及尾页 urlpatterns = [ url(r'^admin/', admin.site.urls), url(r'test',views.test), url(r'testadd',views.testadd), ] 路由一旦匹配就不再走下面的路由匹配关系了 路由增加首页的方式 url(r'^$',views.home) 路由增加尾页的方式(当所有的路径都匹配不上时,给我返回404提示信息) url(r'',views.error)    无名分组: url(r'…
通常而言,我们在用户注册成功,实际登陆之前,会发送一封电子邮件到对方的注册邮箱中,表示欢迎.进一步的还可能要求用户点击邮件中的链接,进行注册确认. 下面就让我们先看看如何在Django中发送邮件吧. 一.在Django中发送邮件 其实在Python中已经内置了一个smtp邮件发送模块,Django在此基础上进行了简单地封装. 首先,我们需要在项目的settings文件中配置邮件发送参数,分别如下: EMAIL_BACKEND = 'django.core.mail.backends.smtp.E…
为了防止机器人频繁登录网站或者破坏分子恶意登录,很多用户登录和注册系统都提供了图形验证码功能. 验证码(CAPTCHA)是一种区分用户是计算机还是人的公共全自动程序. 可以防止恶意破解密码.刷票.论坛灌水,有效防止某个黑客对某一个特定注册用户用特定程序暴力破解方式进行不断的登陆尝试. 图形验证码的历史比较悠久,到现在已经有点英雄末路的味道了.因为机器学习.图像识别的存在,机器人已经可以比较正确的识别图像内的字符了. 但不管怎么说,作为一种防御手段,至少还是可以抵挡一些低级入门的攻击手段,抬高了攻…
我们前面都是手工在HTML文件中编写表单form元素,然后在views.py的视图函数中接收表单中的用户数据,再编写验证代码进行验证,最后使用ORM进行数据库的增删改查.这样费时费力,整个过程比较复杂,而且有可能写得不太恰当,数据验证也比较麻烦. 设想一下,如果我们的表单拥有几十上百个数据字段,有不同的数据特点,如果也使用手工的方式,其效率和正确性都将无法得到保障. 有鉴于此,Django在内部集成了一个表单功能,以面向对象的方式,直接使用Python代码生成HTML表单代码,专门帮助我们快速处…
使用Django开发Web应用的过程中,很多人都是急急忙忙地写视图,写前端页面,把最根本的模型设计给忽略了. 模型中定义了数据如何在数据库内保存,再直白点说就是数据表的定义.这部分工作体现在Django的代码中,其实就是model类的设计. 一. 数据库模型设计 作为一个用户登录和注册项目,需要保存的都是各种用户的相关信息.很显然,我们至少需要一张用户表User,在用户表里需要保存下面的信息: 用户名 密码 邮箱地址 性别 创建时间 进入login/models.py文件,这里将是我们整个log…
一.背景 学了一段时间的语法,总感觉入不了门,所以找点小项目练练手,项目来自网络. 二.创建虚拟环境,并安装Django 使用Python中的virtualenv搭建一个mysite_env全新的环境. virtualenv --no-site-packages mysite_env 进入mysite_env目录下的Scripts子目录,运行activate命令,激活该虚拟环境,此时的命令行提示符将以(mysite_env)开头. 运行pip install django命令. 三.创建工程 进…
数据库代码块 from django.db import models from django.utils import timezone from django.contrib.auth.models import User # Create your models here. class BlogArticles(models.Model): title = models.CharField(max_length=30) author = models.ForeignKey(User,rel…
我们已经可以在view函数中判断用户是否已经登录以及获取用户信息: if request.user.is_authenticated(): #判断用户是否已登录 user = request.user; #获取已登录的用户 else: user = request.user; #非登录用户将返回AnonymousUser对象 Django的User对象提供了一系列的属性和方法,其中password存储的是加密后的密码,is_staff记录用户是否有管理员权限,其 他的属性可以参考官方文档.同时d…
到目前为止,我们开发的所有功能都是匿名访问的,这显然不够安全.通常我们会要求注册的用户通过用户名和密码登录,只有登录后的用户才可以管理产品.套用专业的说法就是:第一步是认证,验证用户是否是他所宣称的那个人:第二步是授权,验证用户是否拥有执行某种操作的权限. Django已经提供了一个django.contrib.auth应用来处理登录.登出和权限验证,同时还提供了 django.contrib.admin应用可以进行用户管理(admin应用还有很多其他的功能).所以我们只需要将这些app插入到我…
在上一节我们实现了针对某个产品的订单订阅功能.但是我们可能需要直接在站点上查询所有的订单.显然,随着时间的增长订单会越来越多,所以分页(Pagination)是个好办法:每次只显示一部分订单. 分页是Web应用常用的手法,Django提供了一个分页器类 Paginator(django.core.paginator.Paginator),可以很容易的实现分页的功能.该类有两个构造参数,一个是数据 的集合,另一个是每页放多少条数据.Paginator的基本使用如下: $python manage.…
记得有人跟我说过,rails的has_many :through是一个”亮点“,在Django看来,该功能简直不值一提.rails中的many-to-many关联中,还需要你手工创建关联表(写 migration的方式),而has_many :through的”语法“只不过是为了自定义关联关系:通过一个中间的.到两端都是many-to-one的模型类实现多对多关联. 在Django中,many-to-many的中间关系表是自动创建的,如果你要指定一个自己的Model类作为关系对象,只需要在需要获…
前面的内容已经基本上涵盖了Django开发的主要方面,我们从需求和界面设计出发,创建模型和修改模型,并通过scaffold作为开发的起点:在scaffold的基础上重新定制模板,并且通过Model类和Form类对用户输入的数据进行校验.我们也涉及到了单元测试.为了提高开发用户界面的效率,更好地实现模板,我们还讨论了对静态资源(css,js,image等)的管理,并通过模板继承的方式实现了整个站点的统一布局.作为web应用必不可少的部分,我们还演示了如何使用会话(session).最后,我们还在这…
现在让我们来通过ajax请求后台服务.当然首选要实现后台服务.关于“加入购物车”,我们需要的服务是这样定义的: url:    http://localhost:8000/depotapp/API/cart/items/post post数据: product = product_id 处理过程: 根据product_id,将product加入购物车 返回:购物车中的所有条目 这个API的定义似乎不那么RESTful,但是暂且不去管它.实现这个服务需要为RESTful web service(d…
现在我们有了一个使用json格式的RESTful API,可以实现这样的功能了:为了避免在产品列表和购物车之间来回切换,需要在产品列表界面显示购物车,并且通过ajax的方式不刷新界面就更新购物车的显示内容. ajax框架的选择 关于ajax框架的选择,看图不说话: 我不管你选的是什么,反正我是选了jquery. 在Django中使用jquery 这个实在是简单得不能在简单了,在depot/static下面创建js文件夹,放入jquery库,如jquery-1.7.1.min.js.然后在模板界面…