【Python实战】Django建站笔记
前一段时间,用Django搭建一个报表分析的网站;借此正好整理一下笔记。
1. 安装
python有包管理工具pip,直接cd Python27/Scripts,输入
pip install django
# install by version
pip install --upgrade Django==<version>
安装完成后,python -c "import django; print(django.get_version())",若能打印出Django的版本信息,即说明安装成功。一般地,Django安装在Python27/Lib/site-package/django目录。
2. Django介绍
项目
Django的架构是MTV(Model-Template-View)。输入命令
python <path>/Python27/Lib/site-packages/django/bin/django-admin.py startproject mysite
创建mysite的Django项目,项目的文件目录如下:
mysite/
manage.py
mysite/
__init__.py
settings.py
urls.py
wsgi.py
- 最外层的mysite目录包含了整个项目,与Django没有半毛钱的直接关系,可改名。
- manage.py提供对项目的命令行(command-line)操作,比如:python manage.py runserver开启服务,默认端口号为8000(若开启端口号为8888,则python manage.py runserver 8888)。
- 内层的mysite文件夹是python package,与项目名相对应。
__init__.py为空文件,表示mysite是一个package。- settings.py为项目的配置文件。
- wsgi.py为WSGI-compatible web servers。
app
输入python manage.py startapp polls,为项目创建了Polls app,文件目录结构如下:
polls/
__init__.py
admin.py
apps.py
migrations/
__init__.py
models.py
tests.py
views.py
app定义网站内容view与model层,view.py定义网站数据的获取,而网页格式规范是在HTML Template中所定义的。比如,在source.html中定义网页:
{% extends "base.html" %}
{% block main %}
<table class="info" cellspacing="0" width="100%">
<thead>...</thead>
<tbody>
<tr>
<td>{{firstWeekDay}}</td>
</tr>
</tbody>
</table>
通过view层向html注入数据(通过context给HTML中定义变量赋值):
# views.py
from django.shortcuts import render_to_response
def source(request):
context = {}
context.update(firstWeekDay=fourWeek[0])
return render_to_response('source.html', context)
上面通过命令建项目的方式可能过于繁琐,PyCharm是IDE中不错一个选择,可用来快速构建Django项目。
3. 实战
循环注入
Django支持注入数据的格式为迭代集合如tuple、list等,用for循环依次取出:
<!-- list -->
<tbody>
<tr>
<td>{{firstWeekDay}}</td>
{% for pv in firstWeekPv %}
<td>{{pv}}</td>
{% endfor %}
</tr>
</tbody>
<!-- list of tuple -->
<tbody>
{% for ad in adParent %}
<tr>
<td>{{ad.0}}</td>
<td>{{ad.1}}</td>
<td>{{ad.2}}</td>
<td>{{ad.3}}</td>
</tr>
{% endfor %}
</tbdoy>
静态导入
Django同时支持导入静态css、js文件等,建议使用绝对路径作为root;这些配置信息须在settings.py中添加:
STATIC_ROOT = '<path>/to/static'
# Static files (CSS, JavaScript, Images)
# https://docs.djangoproject.com/en/1.7/howto/static-files/
STATIC_URL = '/static/'
# Additional locations of static files
STATICFILES_DIRS = (
# Put strings here, like "/home/html/static" or "C:/www/django/static".
# Always use forward slashes, even on Windows.
# Don't forget to use absolute paths, not relative paths.
('css', os.path.join(STATIC_ROOT, 'css').replace('\\', '/')),
('js', os.path.join(STATIC_ROOT, 'js').replace('\\', '/')),
('images', os.path.join(STATIC_ROOT, 'images').replace('\\', '/'))
)
如此,可以在HTML中自由地导入相对路径了:
<link rel="stylesheet" type="text/css" href="/static/css/style.css"/>
<script type="text/javascript" src="/static/js/jquery-1.11.3.min.js"></script>
<script type="text/javascript" src="/static/js/jquery.dataTables.min.js"></script>
【Python实战】Django建站笔记的更多相关文章
- 《玩转Django2.0》读书笔记-Django建站基础
<玩转Django2.0>读书笔记-Django建站基础 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.网站的定义及组成 网站(Website)是指在因特网上根据一 ...
- Django建站+Vuejs前端
第一节 @注意 千万注意格式.标签名字: 浏览器开发者模式修改页面不显示:在开发者模式下(F12进入),打开设置页面(F1),勾选 Disable cache (while DevTools is o ...
- 建站笔记1:centos6.5下安装mysql
近期买了个域名,想要玩玩自己建站点:接下来遇到的问题都会一次记录下来.以备自己以后复习查看: 首先建站方案选择: wordPress +centos6.5 +mysql; server买的:搬瓦工最低 ...
- DigitalOcean 建站笔记
由于在默认的情况下digitalocean的VPS没有设置swap分区,用df -h命令查看的话,整个VPS上只有一个20G的分区.用free命令查看的话,swap分区的大小是0,增加swap分区的命 ...
- Node.js建站笔记-使用react和react-router取代Backbone
斟酌之后,决定在<嗨猫>项目中引入react,整体项目偏重spa模式,舍弃部分server端的模板渲染,将一部分渲染工作交给前端react实现. react拥有丰富的组件,虽然不如Back ...
- Nodejs建站笔记-注册登录流程的简单实现
1. 使用Backbone实现前端hash路由 登录注册页面如下: 初步设想将注册和登录作为两个不同的url实现,但登录和注册功能的差距只有form表单部分,用两个url实现显然开销过大,所以最终方案 ...
- 【Bootstrap3.0建站笔记三】AspNetPager分页,每一列都可排序
1.AspNetPager分页,实现每一列都可排序: (1).须要将默认排序字段放在HTML页面中. (2).排序字段放置为td节点的属性. 如图: 实现的效果 ...
- 【Bootstrap3.0建站笔记一】表单元素排版
1.文字和输入框前后排列: 代码: <div class="row"> <div class="col-lg-12"> <div ...
- 【Bootstrap3.0建站笔记二】button可下拉弹出层
1.button可下拉弹出层: watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvY2hpbmFwbGFu/font/5a6L5L2T/fontsize/400 ...
随机推荐
- IPC操作时IPC_CREAT和IPC_EXCL选项的说明
IPC(包括消息队列,共享内存,信号量)的xxxget()创建操作时,可以指定IPC_CREAT和IPC_EXCL选项.以共享内存为例:当只有IPC_CREAT选项打开时,不管是否已存在该块共享内存, ...
- unity3D学习—坦克大战(一)
背景介绍 本人一名C#程序员,从事C#开发已经有四年有余了,目前在一家大型公司上班.鉴于公司的业务需要,现在需要学习unity3D游戏开发,好在unity支持C#脚本开发,无形中省下了许多重新学习新语 ...
- sql查询
结果集是 id name 1 张三2 张三3 李四4 王五5 王五我想查询出有多少不重名的人的数量,并显示在每一行结果集里面结果如下:num id name 3 1 张三3 2 ...
- Linux系统的理解及学习Linux内核的心得
作业列表 (点击作业跳转) linux内核分析作业:以一简单C程序为例,分析汇编代码理解计算机如何工作 linux内核分析作业:操作系统是如何工作的进行:完成一个简单的时间片轮转多道程序内核 ...
- 启动App的Intent
类似桌面图标打开App的Intent 程序中需要一种通知,点击后的效果需要像点击桌面图标那样: 程序在前台就什么也不干. 程序在后台,就切换到前台. 程序未启动,就启动程序. 点击通知后,通知本身跳转 ...
- CYQ.Data 快速开发之UI(赋值、取值、绑定)原理
昨夜园子猴子问了几个我CYQ.Data使用的小问题,经过简单解答后,他表示“妈妈再也不用担心我的学习",并于事后以资鼓励,希望这框架越走越好. 除了技术上的交流,双方在生活,S上面的问题上也 ...
- Scrum Guide - Scrum指南中文版
现在公司在使用敏捷开发模式进行日常的开发和管理工作,所以我看了下Ken Schwaber的<Scrum Guide>这本小册子,原本是英文的,这里提供中文的,以供日后复习和参考. Scru ...
- 玩转Windows服务系列——Windows服务小技巧
伴随着研究Windows服务,逐渐掌握了一些小技巧,现在与大家分享一下. 将Windows服务转变为控制台程序 由于默认的Windows服务程序,编译后为Win32的窗口程序.我们在程序启动或运行过程 ...
- ASP.NET Web API的Controller是如何被创建的?
Web API调用请求的目标是定义在某个HttpController类型中的某个Action方法,所以消息处理管道最终需要激活目标HttpController对象.调用请求的URI会携带目标HttpC ...
- 操作数据库mysql
显示表结构 desc 表 显示数据库信息 show create database 数据库名 show create table 表名