有了上一节关于Django模板的基础,改造界面就很容易理解了.将界面设计师设计的页面中的内容根据复用程度分别放到基础模板base.html和专用模板productlist.html中. depot/templates/base.html <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text…
编程实战——电影管理器之界面UI及动画切换 在前文“编程实战——电影管理器之利用MediaInfo获取高清视频文件的相关信息”中提到电影管理器的目的是方便播放影片,在想看影片时不需要在茫茫的文件夹下找寻. 我对电影管理器的想法如下: 1.可以全键盘操作(不依赖鼠标),最好是利用键盘上的小数字键区就能完成全部操作. 2.基于HTPC的全屏操作,故软件的大小为1920*1080 3.模仿时下流行的“磁贴”效果. 下图是本软件的初步的界面UI 解释一下: 1.HTPC的屏幕是1920*1080,在软件…
Django配置后台xadmin管理界面 python版本3.6.5 Django版本1.10.8(刚开始是2.1.5,由于各种错误,改成了低版本) 1.xadmin的安装,下载地址https://github.com/sshwsfc/xadmin 2.下载完成后,解压,进入文件夹,shift+右键,选择在此处打开命令窗口 3.命令行窗口输入python setup.py install 安装xadmin 完成: 4.下载安装好之后,打开Django项目,在settings文件中,配置xadmi…
到目前为止,我们开发的所有功能都是匿名访问的,这显然不够安全.通常我们会要求注册的用户通过用户名和密码登录,只有登录后的用户才可以管理产品.套用专业的说法就是:第一步是认证,验证用户是否是他所宣称的那个人:第二步是授权,验证用户是否拥有执行某种操作的权限. Django已经提供了一个django.contrib.auth应用来处理登录.登出和权限验证,同时还提供了 django.contrib.admin应用可以进行用户管理(admin应用还有很多其他的功能).所以我们只需要将这些app插入到我…
<跟老齐学Python Django实战>作为市面上少有的Django通俗实战书籍,给了我学习Django很大的帮助.作为一名新入门的菜鸟,全书我重复练习了至少三遍,每次都有新的收获. 前两次我选用了跟原书作者一致的Python和Django版本,只要保证代码没“抄错”,基本不会有什么问题.第三次使用了更新的"Django==2.1.1",在路由urls.py配置中发现了不少问题,并一一改正. 写此博文,纪念自己的学习成果,并向作者qi sir致敬! 我的环境.版本:Cen…
因为因特网HTTP协议的特性,每一次来自于用户浏览器的请求(request)都是无状态的.独立的. 通俗地说,就是无法保存用户状态,后台服务器根本就不知道当前请求和以前及以后请求是否来自同一用户.对于静态网站,这可能不是个问题,而对于动态网站,尤其是京东.天猫.银行等购物或金融网站,无法识别用户并保持用户状态是致命的,根本就无法提供服务. 你可以尝试将浏览器的cookie功能关闭,你会发现将无法在京东登录和购物. 为了实现连接状态的保持功能,网站会通过用户的浏览器在用户机器内被限定的硬盘位置中写…
现在让我们来通过ajax请求后台服务.当然首选要实现后台服务.关于“加入购物车”,我们需要的服务是这样定义的: url:    http://localhost:8000/depotapp/API/cart/items/post post数据: product = product_id 处理过程: 根据product_id,将product加入购物车 返回:购物车中的所有条目 这个API的定义似乎不那么RESTful,但是暂且不去管它.实现这个服务需要为RESTful web service(d…
之前生成了Product类的scaffold,但是如同rails的开发者David所讲的那样,scaffold几乎没什么用.所以按照<Agile Web Development with Rails 4th>中的迭代计划,下一步的修改是美化list页面: 但是这个界面还是太丑陋了.其实,有了bootstrap后,很多站点都变成了“又黑又硬”的工具条+“小清新”风格.我们即不能免俗,又懒得自已设计风格,不妨用bootstrap将产品清单界面重新设计成如下的风格: 下面让我们来实现这个界面.显然w…
需求: 实现请假单的电子审批 1. 支持国际化 2. 支持模型级别的访问记录 here we go: 这里会写一系列的文章,来记录我实战的过程,由于接触django没多久,难免有疏漏之处,望拍砖不要太重. ==========后记================= 发现cnblog似乎有些鞭长莫及.因为文档编排的关系,最后用word记录了.可以这里查看全文:http://download.csdn.net/detail/lion_awake/7859773 (建议下载查看,然后评论返回积分)…
今天来实现用户登录模块 首先,我们创建一个表单(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…
admin是django提供的基于web的管理数据库的工具,它是django.contrib 的一部分,可以在项目的settings.py中的INSTALLED_APPS看到. 一.admin管理工具的使用方法如下: 1.在models.py中创建模型 class Students(models.Model): sname=models.CharField(max_length=20) age=models.IntegerField() gender=models.BooleanField()…
为了防止机器人频繁登录网站或者破坏分子恶意登录,很多用户登录和注册系统都提供了图形验证码功能. 验证码(CAPTCHA)是一种区分用户是计算机还是人的公共全自动程序. 可以防止恶意破解密码.刷票.论坛灌水,有效防止某个黑客对某一个特定注册用户用特定程序暴力破解方式进行不断的登陆尝试. 图形验证码的历史比较悠久,到现在已经有点英雄末路的味道了.因为机器学习.图像识别的存在,机器人已经可以比较正确的识别图像内的字符了. 但不管怎么说,作为一种防御手段,至少还是可以抵挡一些低级入门的攻击手段,抬高了攻…
我们前面都是手工在HTML文件中编写表单form元素,然后在views.py的视图函数中接收表单中的用户数据,再编写验证代码进行验证,最后使用ORM进行数据库的增删改查.这样费时费力,整个过程比较复杂,而且有可能写得不太恰当,数据验证也比较麻烦. 设想一下,如果我们的表单拥有几十上百个数据字段,有不同的数据特点,如果也使用手工的方式,其效率和正确性都将无法得到保障. 有鉴于此,Django在内部集成了一个表单功能,以面向对象的方式,直接使用Python代码生成HTML表单代码,专门帮助我们快速处…
基本框架搭建好了后,我们就要开始丰富页面内容了.最起码,得有一个用户登录的表单不是么?(注册的事情我们先放一边.) 一. 原生HTML页面 删除原来的login.html文件中的内容,写入下面的代码: <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>登录</title> </head> <…
使用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命令. 三.创建工程 进…
管理界面的使用 管理界面的URL,帐号和密码在第一次输入syncdb时建立 http://127.0.0.1:8000/admin/ 将app加入管理界面 编辑polls/admin.py from django.contrib import admin from polls.models import Poll admin.site.register(Poll) 定制管理表格 #改变顺序 from django.contrib import admin from polls.models im…
我们已经可以在view函数中判断用户是否已经登录以及获取用户信息: if request.user.is_authenticated(): #判断用户是否已登录 user = request.user; #获取已登录的用户 else: user = request.user; #非登录用户将返回AnonymousUser对象 Django的User对象提供了一系列的属性和方法,其中password存储的是加密后的密码,is_staff记录用户是否有管理员权限,其 他的属性可以参考官方文档.同时d…
前面的内容已经基本上涵盖了Django开发的主要方面,我们从需求和界面设计出发,创建模型和修改模型,并通过scaffold作为开发的起点:在scaffold的基础上重新定制模板,并且通过Model类和Form类对用户输入的数据进行校验.我们也涉及到了单元测试.为了提高开发用户界面的效率,更好地实现模板,我们还讨论了对静态资源(css,js,image等)的管理,并通过模板继承的方式实现了整个站点的统一布局.作为web应用必不可少的部分,我们还演示了如何使用会话(session).最后,我们还在这…
现在我们有了一个使用json格式的RESTful API,可以实现这样的功能了:为了避免在产品列表和购物车之间来回切换,需要在产品列表界面显示购物车,并且通过ajax的方式不刷新界面就更新购物车的显示内容. ajax框架的选择 关于ajax框架的选择,看图不说话: 我不管你选的是什么,反正我是选了jquery. 在Django中使用jquery 这个实在是简单得不能在简单了,在depot/static下面创建js文件夹,放入jquery库,如jquery-1.7.1.min.js.然后在模板界面…
曾几何时,Ajax已经统治了Web开发中的客户端,而REST成为web世界中最流行的架构风格(architecture style).所以我们的选择变得很简单:前端ajax访问后端的RESTful web service对资源进行操作. Django中有一些可选的REST framework,比如django-piston,django-tasypie. 但是我和google(呵呵,不好意思)推荐这个:Django REST framework.因为这个框架的几个特点: 1. 名字好!直入主题…
上一节我们实现了一个”能看不能用“的购物车,现在我们来使用这个购物车. 首先是产品目录界面中的”加入购物车“链接,我们希望点击这个按钮后,在购物车中添加该产品(添加的规则是如果购物车中已经有该产品就增加数量,如果没有就增加条目),然后显示购物车.首先我们设计一个”RESTful“的加入购物车链接,其形式是: http://localhost:8080/depotapp/cart/add/xxx 其中xxx为产品的ID. 这需要在depotapp/urls.py中增加一条配置: (r'cart/v…
现在,我们有了一个产品目录界面,用户如果看到满意的产品,就可以将其放入购物车.下面就让我们来实现购物车的功能. 首先要做一下简单的分析和设计.购物车应该显示一系列产品的清单,其中列出了买方选中的产品.但是这个清单没有必要马上保存到数据库,因为直到付款之前,用户随时都有可能改变主意.我们只需要在用户的session中记录这些产品就可以了. 购物车中的条目 购物车中的条目与产品(Product)很 类似,但是我们没有必要将这些信息再重复记录一次,而只需要让条目关联到产品即可.此外在条目中还会记录一些…
针对上一节的新需求,界面设计师还为我们设计了一个新的界面,不仅仅是目录页,还包含了站点的整体风格,如下图: 感谢界面设计师为我们提供的“又黑又硬”的工具条,这个看起来真的很酷.下面,让我们来享用她的工作成果吧. 我们前面的scaffold已经生成了有继承关系模板,显然对于一些公用的内容应该放到base.html之中.但是我们先把这件事情放到一边,先来实现目录页. 首选为目录页确定一个url,不妨叫做/depotapp/store,在depotapp的urls.py中增加一条pattern: (r…
我们已经实现了卖方的产品维护界面,根据最初的需求,还要为买方实现一个目录页:买方通过这个界面浏览产品并可以加入购物车.通过进一步需求调研,了解到产品有一个“上架时间”,在这个时间之后的产品才能被买方看到.并且买方应该先看到最新的产品. 我们注意到,这个“新需求”需要对Product进行调整,增加一个日期属性date_available来保存“上架时间”.如同开发新功能一样,在修改的时候也应该从model开始. 为Model类增加一个属性很容易: class Product(models.Mode…
rails有一个无用的”神奇“功能,叫做scaffold.能够在model基础上,自动生成CRUD的界面. 说它无用,是因为rails的开发者David说,scaffold”不是应用程序开发的目的.它只是在我们构建应用程序时提供支持.当你设计出产 品的列表该如何工作时,你依赖于“支架”“生成器”产生创建,更新,和删除的行为.然后在保留这个“动作”时你要替换由“生成器”生成的行为.有时候当你 需要一个快速接口时,并且你并不在乎界面的丑陋,“支架”就足够用了.不要指望scaffold能满足你程序的所…
该实战教程基于菜鸟教程,菜鸟教程可参考:http://www.runoob.com/django/django-template.html 模板语法,每个框架都有其支持的模板语法,Django的模板语法在我看来与vue.js倒有一些相似处 ,比如它们的模板语法中参数为{{parm}}. 本篇所用到的例子,仍然基于实战(一) 在HelloWorld(该文件夹有urls.py)目录下新增templates文件夹,在templates新增hello.html <html> <head>…
2013年7月13日10:36:53:接上篇,bae部署django没成功,转战阿里云.. 阿里云服务器最便宜69/月,现在有个活动,新用户送20元现金券,我就花了RMB 49买了一个,操作系统选的是ubuntu1204安全加强版. 1.putty登陆远程主机 putty下载地址:http://the.earth.li/~sgtatham/putty/latest/x86/putty.zip,解压后直接运行putty.exe即可. 2.Xftp与远程主机传文件 Xftp下载地址http://ww…
从这天开始我们需要用到前端源码,需要的朋友可以进行小额打赏(15元),打赏二维码在博客的右侧,打赏后可以凭截图联系463951510@qq.com,博主收到邮件后会立即回复发送所有源码素材,实战过程中遇到问题也可以互相探讨 1.把首页文件index.html复制到项目的templates目录下 2.在项目根目录下创建static文件夹,用于存放静态文件 3.把css\images\img\js目录复制到static目录下 4.编辑urls.py,添加一条url到首页,其中需要导入一个view,表…
1.环境搭建和创建项目 1.环境搭建 每当我们开始一个新项目的时候,通常都会搭建一个全新.独立.隔离的项目环境,这样做的好处自然不必多说.有很多种建立项目虚拟环境的工具,使用比较普遍的是Python中的virtualenv.安装好virtualenv工具后,进入想要放置的项目文件夹,建立一个虚拟环境,激活环境,安装django. virtualenv -p python3 venv #创建虚拟环境 source venv/bin/activate #激活虚拟环境 pip #安装django 2.…