【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 ...
随机推荐
- Ajax是如何运行的?
1.我们需要知道什么是Ajax: AJAX = Asynchronous JavaScript and XML(异步的 JavaScript 和 XML). AJAX 不是新的编程语言,而是一种使用现 ...
- C语言的傻瓜式随笔(一):嵌套循环-程序结构
循环语句的嵌套 一个循环结构内可以含有另一个循环,称为循环嵌套,又称多重循环.常用的循环嵌套是二重循环,外层循环称为外循环,内层循环称为内循环. ---------不知道哪来的基础概念 这是本宝宝的第 ...
- ABP理论学习之依赖注入
返回总目录 本篇目录 什么是依赖注入 传统方式产生的问题 解决办法 依赖注入框架 ABP中的依赖注入基础设施 注册 解析 其他 ASP.NET MVC和ASP.NET Web API集成 最后提示 什 ...
- UI控件(UIAlertController)
@implementation ViewController - (void)viewDidLoad { [super viewDidLoad]; UIButton *_button = [UIBut ...
- 为什么google bazel构建工具流行不起来
作者Jack47 转载请保留作者和原文出处 之前博主写了系列文章Google软件构建工具Bazel原理及使用方法介绍.最近使用了一段时间后,觉得这个东西不是一种通用的构建工具,很难对接到情况复杂的大的 ...
- DDD领域驱动设计之领域服务
1.DDD领域驱动设计实践篇之如何提取模型 2.DDD领域驱动设计之聚合.实体.值对象 3.DDD领域驱动设计之领域基础设施层 什么是领域服务,DDD书中是说,有些类或者方法,放实体A也不好,放实体B ...
- VB6.0中,DTPicker日期、时间控件不允许为空时,采用文本框与日期、时间控件相互替换赋值(解决方案)
VB6.0中,日期.时间控件不允许为空时,采用文本框与日期.时间控件相互替换赋值,或许是一个不错的选择. 实现效果如下图: 文本框txtStopTime1 时间框DTStopTime1(DTPicke ...
- 我也来说说DDD~大话目录
回到占占推荐博客索引 DDD之前没有接触过,但一但有了接触就一发不可收拾,他会带去进入一个全新的世界! DDD不是新技术,而是新思想,新模式,是软件开发领域的一次突破,它更接近于业务,对于业务的改动它 ...
- java中集合类中Collection接口中的List接口的常用方法熟悉
1:集合类,在java语言中的java.util包提供了一些集合类,这些集合类又被称作容器. 2:区别集合类和数组.(1)数组的长度是固定的,集合的长度是可变的.(2)数组是用来存放基本数据类型的,集 ...
- rabbitMQ第五篇:Spring集成RabbitMQ
前面几篇讲解了如何使用rabbitMq,这一篇主要讲解spring集成rabbitmq. 首先引入配置文件org.springframework.amqp,如下 <dependency> ...