这是我自己理解并自己画的,django 请求示意图,表示了它的组织方式。

project

  • manage.py: 主要工具文件
  • settings.py: 配置文件
  • urls.py: url 定义及其指向文件
  • wsgi.py 文件

App

  • views.py: url 对应函数
  • models.py: DB 数据表结构

我们还可以建立:

  • forms.py:表单定义文件,用于自动生成表单
  • controller.py:DB操作(增删改查),供 views.py 调用
  • utils.py: 与 DB 无关的一些操作,供 views.py 调用

一个Project 可以有多个App, 一个App 也可以属于多个project, 由 urls.py 中定义 url 来衔接。

模板和视图:

DATABASES = {
'default': {
'ENGINE': 'django.db.backends.mysql',
'NAME': project_name,
'USER': 'root',
'PASSWORD': 'abcd123',
'HOST': '',
'PORT': '',
}
}
  • project, app 配置 settings.py
INSTALLED_APPS = (
...
project_name,
app_name,
)
  • 静态文件引用

settings.py.  https://docs.djangoproject.com/en/1.8/howto/static-files/

目录结构 res/img, res/css, res/jquery-ui

# STATIC_URL = '/static/'
STATIC_ROOT = os.path.join(BASE_DIR)
STATICFILES_DIRS = (
os.path.join(BASE_DIR, 'res'),
)
STATICFILES_FINDERS = (
"django.contrib.staticfiles.finders.FileSystemFinder",
"django.contrib.staticfiles.finders.AppDirectoriesFinder"
)

xxx.html 模板文件

    {% load staticfiles %}
<link href="{% static 'jquery-ui/jquery-ui.css'%}" rel="stylesheet">
<script src="{% static 'jquery-ui/external/jquery/jquery.js'%}"></script>
<script src="{% static 'jquery-ui/jquery-ui.js'%}"></script>
<link href="{% static 'css/main.css'%}" rel="stylesheet"> <img src="{% static 'img/icon.png'%}" alt="">

main.css (res/css/main.css)

th {font-size:14px;
height:23px;
font-weight: bold;
background: #cccccc url("../jquery-ui/images/ui-bg_highlight-soft_75_cccccc_1x100.png") 50% 50% repeat-x;
text-align:left;}
  • 模板应用
        {% if item.dut_list %}
{% for rec in item.dut_list %}
<tr class="{{ rec.tr_class }}">
<td>&nbsp;</td>
<td style="text-align:right"><input type="checkbox" name="check" class="{{ item.id }}"/></td>
<td class="dutName">{{ rec.dut }}</td>
<td class="status"><div class="{{ rec.status_class }}">&nbsp; </div></td>
<td class="description">{{ rec.des }}</td>
<td><input type="text" name="dut_group" style="width:100%" value="{{ rec.group }}" {{ rec.group_attr }} /></td>
<td>&nbsp;</td>
<td><a name="dut" href="{{ rec.ref }}"><span class="ui-icon {{ rec.span_class }}"></span></a></td>
<td>&nbsp;</td>
</tr>
{% endfor %}
{% endif %}

views.py

def detect_all(request):
''' detect duts which connected to the specified host'''
print '-'*8, 'detect_all', '-'*8
count = 0
result = []
server_list = controller.get_all_hosts()
host = utils.get_host()
for srv in server_list:
dut_list = []
...
for item in xxx:
...
dut_list.append(dict(tr_class=tr_class, span_class=span_class, ref=ref, status_class=status_class, dut=dut, des=des, group=group, group_attr=group_attr))
count += 1
result.append({'srv':srv.name, 'id': srv.id, 'tr_class':srv_tr_class, 'dut_list':dut_list})
# print result
return render(request, 'detect_device.html', {'srv_dut_list': result})
  • POST request
<form method="post" id="formAdd" action="/add_server/">
{% csrf_token %}
<input type="text" name="serverName" value=""/>
<input type="hidden" name="group" value=""/>
<select id="group">
<option value="CI" selected>CI</option>
<option value="PIT">PIT</option>
<option value="other">Other</option>
</select>
<button class="ui-state-default ui-corner-all" id="add_server" type="submit">Add</button>
</form>

views.py

def add_server(request):
print '-'*8, 'add_server', '-'*8
host = request.POST.get('serverName', '')
group = request.POST.get('group', '') ... ...
  • Ajax request
        /*
$("#add_server").click(function(){
var data = {'serverName': $("input[name='serverName']").val(),
'group':$("input[name='group']").val() }
$.ajax({
type:'POST',
dataType: 'html',
url: '/add_server/',
data: data,
success: function(data){
if (data.length>0) {
$("#add_show").html(data);
}
}
});
return false; # 页面不跳转
});*/

Django 学习记录的更多相关文章

  1. Django学习记录--~Biubiubiu

    Day One Django常用命令 1.创建Django网站框架 django-admin startproject mysite # mysite为定义的项目文件夹名称 2.超级用户创建 py m ...

  2. Django 学习记录(AcWing)

    Django 2.1 搭建文件结构 前面的都是配置基本步骤,不需要理解,其他Django项目同样步骤操作: 接下来用Django-admin新建一个Django项目: django-admin sta ...

  3. django学习记录

    1.参考资料问题: 现在django发布了1.11版本,离线文档下载引擎地址 文档下载地址 在线文档:https://docs.djangoproject.com/en/1.10/intro/tuto ...

  4. django学习记录--第一个网页“hello django”

    一.安装django 下面两种方法任选其一 1.pip或easy_install 安装 pip install django easy_install django 2.到django官网(https ...

  5. django学习记录1

    在看django的基础知识,还是按照以前一样来总结,还是晚上再统一总结好了,边看边总结好像效果不大. 第一部分是生成数据库,用python manage.migrate命令来生成django的基础架构 ...

  6. django 学习记录(一)

    不使用 drf 来实现django 的 api 接口 json序列化 from django.shortcuts import render from django.views.generic.bas ...

  7. [Django]模型学习记录篇--基础

    模型学习记录篇,仅仅自己学习时做的记录!!! 实现模型变更的三个步骤: 修改你的模型(在models.py文件中). 运行python manage.py makemigrations ,为这些修改创 ...

  8. 巨蟒django之CRM5 学习记录&&课程记录&&班级管理&&私户的数量上限

    1.公户变私户(事务+行级锁) 2.私户的数量上限 3.班级的管理 4.课程记录管理 5.学习记录的初始化 6.展示和编辑学习记录

  9. Django 学习笔记之四 QuerySet常用方法

    QuerySet是一个可遍历结构,它本质上是一个给定的模型的对象列表,是有序的. 1.建立模型: 2.数据文件(test.txt) 3.文件数据入库(默认的sqlite3) 入库之前执行 数据库同步命 ...

随机推荐

  1. HDU 2665.Kth number-可持久化线段树(无修改区间第K小)模板 (POJ 2104.K-th Number 、洛谷 P3834 【模板】可持久化线段树 1(主席树)只是输入格式不一样,其他几乎都一样的)

    Kth number Time Limit: 15000/5000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Total ...

  2. HDU 1016.Prime Ring Problem-素数环,相邻两数和为素数-DFS

    Prime Ring Problem Time Limit: 4000/2000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Other ...

  3. 洛谷P2127 序列排序 [贪心]

    题目传送门 题目描述 小C有一个N个数的整数序列,这个序列的中的数两两不同.小C每次可以交换序列中的任意两个数,代价为这两个数之和.小C希望将整个序列升序排序,问小C需要的最小代价是多少? 输入输出格 ...

  4. 洛谷——P1618 三连击(升级版)

    P1618 三连击(升级版) 题目描述 将1,2,…,9共9个数分成三组,分别组成三个三位数,且使这三个三位数的比例是A:B:C,试求出所有满足条件的三个三位数,若无解,输出“No!!!”. //感谢 ...

  5. CocurrentHashMap和HashTable区别分析

    集合是编程中最常用的数据结构.而谈到并发,几乎总是离不开集合这类高级数据结构的支持.比如两个线程需要同时访问一个中间临界区(Queue),比如常会用缓存作为外部文件的副本(HashMap).这篇文章主 ...

  6. [P3806] Divide and Conquer on Tree

    Link: P3806 传送门 Solution: 询问树上是否存在两点间的距离为$k$,共有$m$次询问($m\le 100,k\le 1e7$) 预处理出所有距离的可能性再$O(1)$出解的复杂度 ...

  7. BZOJ 4059 [Cerc2012]Non-boring sequences(启发式分治)

    [题目链接] http://www.lydsy.com/JudgeOnline/problem.php?id=4059 [题目大意] 一个序列被称为是不无聊的,仅当它的每个连续子序列存在一个独一无二的 ...

  8. [ARC097F]Monochrome Cat

    题意:一棵树,每个节点是黑色或白色,你可以从任意节点开始进行一些操作并在任意节点结束,如果当前在$x$,那么一次操作可以是:1.走到相邻节点$y$并翻转$y$的颜色,2.翻转$x$的颜色,问把所有节点 ...

  9. 【并查集】Gym - 101128B - Black Vienna

    有26张牌(A~Z),其中三张被拿走了.其余23张被分发给了两个人.给你m次调查结果,一次调查结果是对其中一个人询问一对牌,他会告诉你他有这对牌的几张(0~2).问你有多少种被拿走的牌的组合. 三重循 ...

  10. 获取asp.net mvc应用程序的根目录

    如果使用Server.MapPath(“controllerName”)这样取得的是带控制权名称的目录, 所以要取得上一级目标,如:Server.MapPath("../"),这才 ...