Django 学习记录
这是我自己理解并自己画的,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 来衔接。
模板和视图:
- 数据库配置 settings.py. https://docs.djangoproject.com/en/1.8/ref/settings/#databases
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> </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 }}"> </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> </td>
<td><a name="dut" href="{{ rec.ref }}"><span class="ui-icon {{ rec.span_class }}"></span></a></td>
<td> </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 学习记录的更多相关文章
- Django学习记录--~Biubiubiu
Day One Django常用命令 1.创建Django网站框架 django-admin startproject mysite # mysite为定义的项目文件夹名称 2.超级用户创建 py m ...
- Django 学习记录(AcWing)
Django 2.1 搭建文件结构 前面的都是配置基本步骤,不需要理解,其他Django项目同样步骤操作: 接下来用Django-admin新建一个Django项目: django-admin sta ...
- django学习记录
1.参考资料问题: 现在django发布了1.11版本,离线文档下载引擎地址 文档下载地址 在线文档:https://docs.djangoproject.com/en/1.10/intro/tuto ...
- django学习记录--第一个网页“hello django”
一.安装django 下面两种方法任选其一 1.pip或easy_install 安装 pip install django easy_install django 2.到django官网(https ...
- django学习记录1
在看django的基础知识,还是按照以前一样来总结,还是晚上再统一总结好了,边看边总结好像效果不大. 第一部分是生成数据库,用python manage.migrate命令来生成django的基础架构 ...
- django 学习记录(一)
不使用 drf 来实现django 的 api 接口 json序列化 from django.shortcuts import render from django.views.generic.bas ...
- [Django]模型学习记录篇--基础
模型学习记录篇,仅仅自己学习时做的记录!!! 实现模型变更的三个步骤: 修改你的模型(在models.py文件中). 运行python manage.py makemigrations ,为这些修改创 ...
- 巨蟒django之CRM5 学习记录&&课程记录&&班级管理&&私户的数量上限
1.公户变私户(事务+行级锁) 2.私户的数量上限 3.班级的管理 4.课程记录管理 5.学习记录的初始化 6.展示和编辑学习记录
- Django 学习笔记之四 QuerySet常用方法
QuerySet是一个可遍历结构,它本质上是一个给定的模型的对象列表,是有序的. 1.建立模型: 2.数据文件(test.txt) 3.文件数据入库(默认的sqlite3) 入库之前执行 数据库同步命 ...
随机推荐
- ubuntu下做柯老师lab19-lab20实验问题总结
前两篇文章告诉了大家如何将无线封包传输遗失模型和myevalvid添加到ns2.35中,已经成功验证了,这个没有问题.但是本人在做lab19和lab20实验时又发现了一些关于myevalvid工具集的 ...
- Eclipse Qt开发环境的建立
1.下载Eclipse目前Eclipse+CDT已经可以集成下载了,好像优化过了,速度还比较快.下载的地址是:http://www.eclipse.org/downloads/,选择“Eclipse ...
- java 中整数类型的进制转换
int a=10; Integer.toBinaryString(a); //转换成2进制Integer.toOctalString(a); //转换成8进制Integer.toHexString( ...
- python之并发编程(线程\进程\协程)
一.进程和线程 1.进程 假如有两个程序A和B,程序A在执行到一半的过程中,需要读取大量的数据输入(I/O操作),而此时CPU只能静静地等待任务A读取完数据才能继续执行,这样就白白浪费了CPU资源.是 ...
- 在Spring Controller中将数据缓存到session
Servlet方案 在Controller的方法的参数列表中,添加一个javax.servlet.http.HttpSession类型的形参.spring mvc会 自动把当前session对象注入这 ...
- 【Tempest】openstack自动化测试组件tempest及自动化测试工具nose
宝宝心里苦,但是宝宝只能在这穷乡僻壤说,下周又要开组会必须得干点事了.这次是做论文中的实验部分,主要利用到了openstack中的自动化测试组件Tempest,具体原因不细说了. 安装 分两种安装方法 ...
- mCustomScrollbar动态加载滚动条
生成html代码之前: $(".main_body_con").mCustomScrollbar("destroy"); html添加到页面之后: $(&quo ...
- Unity中Invoke 和 InvokeRepeating的区别
Invoke() 方法是 Unity3D 的一种委托机制 如: Invoke("Test", 5); 它的意思是:5 秒之后调用 Test() 方法: 使用 Invoke() ...
- 使用phpExcel实现Excel数据的导入导出(完全步骤)
使用phpExcel实现Excel数据的导入导出(完全步骤) 很多文章都有提到关于使用phpExcel实现Excel数据的导入导出,大部分文章都差不多,或者就是转载的,都会出现一些问题,下面是本人 ...
- Xcode9出现错误safe area layout guide before ios 9 真正解决办法
网上很多解决办法瞎扯淡,以讹传讹之势愈演愈烈. 正解是选中控制器,右边面板的Builds for 选择iOS9.0 and Later,如下图红框广为流传的错解是不勾选Use Safe Area La ...