django环境准备学习笔记(三)
环境准备
创建Django工程
django-admin startproject 工程名
创建 Django 超级用户:python manage.py createsuperuser
1、注释 #'django.middleware.csrf.CsrfViewMiddleware',
2、创建template模板文件夹和static静态文件夹
3、设置静态路径:STATICFILES_DIRS = (
os.path.join(BASE_DIR, 'static'),
)
4、创建app cd 工程名 python manage.py startapp APP01
5、将APP01注册到setting里
6、在app的models里面创建数据库
第一张表:
class Host(models.Model):
nid = models.AutoField(primary_key=True) #主键一般自动生成,也可以自己设定,但是需要声明primary_key
hostname = models.CharField(max_length=32,db_index=True) #db_index添加索引
ip = models.GenericIPAddressField(protocol="ipv4",db_index=True) #db_index添加索引设置字段为ip模式
port = models.IntegerField()
b = models.ForeignKey(to="Business", to_field='id') 添加外键,关联到Business的id 第二张表:
class Business(models.Model):
# id 自动创建
caption = models.CharField(max_length=32)
code = models.CharField(max_length=32,null=True,default="SA")
# fk = models.ForeignKey('Foo') 7、执行命令,创建表
python manage.py makemigrations
python manage.py migrate
创建表之后可能会修改表结构或者改表名字等,先在models里面做完修改执行命令之后会有选项,
让你为新加的列设置默认值,也可以在models里面修改的时候这样写
code = models.CharField(max_length=32,null=True,default="SA")
7.1查看表:使用Navicat Premium查看表是否建立
在admin里面创建注册表,也可以使用admin后台页面对数据库增删改查
# -*- coding: utf-8 -*-
from __future__ import unicode_literals from django.contrib import admin from app01.models import UserInfo
from app01.models import Zte
# Register your models here. class UserInfoAdmin(admin.ModelAdmin):
pass class zte(admin.ModelAdmin):
pass admin.site.register(UserInfo,UserInfoAdmin)
admin.site.register(Zte,zte)
8、在url里面加入:
from app01 import views urlpatterns = [
url(r'^admin/', admin.site.urls),
url(r'^business$', views.business), 这里一般加一个终止符,不加的话下面那一行永远不会执行
#url(r'^businessadd', admin.site.urls),
]
9、在app01的views里面加入business函数
from django.shortcuts import render
from django.shortcuts import redirect
from app01 import models
# Create your views here.
def business(request):
#从数据库获取但表单的三种方式
v=models.Business.objects.all()
#QuerySet 上面语句会得到一个QuerySet列表,列表里面是三个对象。对象有下面这些属性
# [obj(id,caption,code),obj(id,caption,code),obj(id,caption,code) ]
另一种方法
v2 = models.Business.objects.all().values('id','caption')#根据value获得了两列值
# QuerySet
# [{'id':1,'caption': '运维部'},{'id':1,'caption': '开发'},...]
v3 = models.Business.objects.all().values_list('id','caption')
# QuerySet
# [(1,运维部),(2,开发)]
return render(request,'business.html',{'v':v}) 9.1使用host调用外键字段的方法
def host(request):
v1 = models.Host.objects.all()
v2 = models.Host.objects.filter(nid__gt=0)
print v1,'-----',v2,'----'
for row in v2:
print (row.nid,row.hostname,row.ip,row.port,row.b_id,row.b.caption,row.b.id)
# return HttpResponse('112312')
# v1 = models.Business.objects.filter(host__nid__gt=0)#也可以使用大于0的方式来获取
return render(request, 'host.html', {'v1': v1}) 10、在模块路径下增加business.html文件
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body>
<h1>业务线列表(对象形式的)</h1>
<ul>
{% for row in v1 %}
<li>{{ row.id}}-{{ row.caption}}-{{ row.code }}</li>
{% endfor %}
</ul>
<h1>业务线列表(字典形式的)</h1>
<ul>
{% for row in v2 %}
<li>{{ row.id}}-{{ row.caption}}-</li>
{% endfor %}
</ul>
<h1>业务线列表(元组形式的)</h1>
<ul>
{% for row in v3 %}
<li>{{ row.0}}-{{ row.1}}-</li>
{% endfor %}
</ul>
</body>
</html>
host文件 <!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body>
<table border="1">
<thead>
<tr>
<th>主机名</th>
<th>iP</th>
<th>端口</th>
<th>业务线名称</th>
</tr>
</thead>
<tbody>
{% for row in v1 %}
<tr hid="{{ row.nid }}" bid="{{ row.b_id }}"/>
<td>{{ row.hostname }}</td>
<td>{{ row.ip }}</td>
<td>{{ row.port }}</td>
<td>{{ row.b.caption }}</td>
{% endfor %}
</tbody>
</table> </body>
</html>
django环境准备学习笔记(三)的更多相关文章
- iView学习笔记(三):表格搜索,过滤及隐藏列操作
iView学习笔记(三):表格搜索,过滤及隐藏某列操作 1.后端准备工作 环境说明 python版本:3.6.6 Django版本:1.11.8 数据库:MariaDB 5.5.60 新建Django ...
- 学习笔记(三)--->《Java 8编程官方参考教程(第9版).pdf》:第十章到十二章学习笔记
回到顶部 注:本文声明事项. 本博文整理者:刘军 本博文出自于: <Java8 编程官方参考教程>一书 声明:1:转载请标注出处.本文不得作为商业活动.若有违本之,则本人不负法律责任.违法 ...
- kvm虚拟化学习笔记(三)之windows kvm虚拟机安装
KVM虚拟化学习笔记系列文章列表----------------------------------------kvm虚拟化学习笔记(一)之kvm虚拟化环境安装http://koumm.blog.51 ...
- 物联网学习笔记三:物联网网关协议比较:MQTT 和 Modbus
物联网学习笔记三:物联网网关协议比较:MQTT 和 Modbus 物联网 (IoT) 不只是新技术,还是与旧技术的集成,其关键在于通信.可用的通信方法各不相同,但是,各种不同的协议在将海量“事物”连接 ...
- SHELL学习笔记三
SHELL学习笔记一 SHELL学习笔记二 SHELL学习笔记三 for 命令 读取列表中的复杂值 从变量读取列表 从命令读取值 更改字段分隔符 用通配符读取目录 which 使用多个测试命令 unt ...
- ZooKeeper学习笔记三:使用ZooKeeper实现一个简单的配置中心
作者:Grey 原文地址:ZooKeeper学习笔记三:使用ZooKeeper实现一个简单的配置中心 前置知识 完成ZooKeeper集群搭建以及熟悉ZooKeeperAPI基本使用 需求 很多程序往 ...
- Oracle学习笔记三 SQL命令
SQL简介 SQL 支持下列类别的命令: 1.数据定义语言(DDL) 2.数据操纵语言(DML) 3.事务控制语言(TCL) 4.数据控制语言(DCL)
- [Firefly引擎][学习笔记三][已完结]所需模块封装
原地址:http://www.9miao.com/question-15-54671.html 学习笔记一传送门学习笔记二传送门 学习笔记三导读: 笔记三主要就是各个模块的封装了,这里贴 ...
- JSP学习笔记(三):简单的Tomcat Web服务器
注意:每次对Tomcat配置文件进行修改后,必须重启Tomcat 在E盘的DATA文件夹中创建TomcatDemo文件夹,并将Tomcat安装路径下的webapps/ROOT中的WEB-INF文件夹复 ...
随机推荐
- man clock
CLOCK(3) Linux程序员手册 CLOCK(3) 名称 时钟-确定处理器时间 简介 #include <time.h> clock_t clock(void); ...
- 【NOIP2016提高A组模拟8.14】疯狂的火神
题目 火神为了检验zone的力量,他决定单挑n个人. 由于火神训练时间有限,最多只有t分钟,所以他可以选择一部分人来单挑,由于有丽子的帮助,他得到了每个人特定的价值,每个人的价值由一个三元组(a,b, ...
- A1009
两个多项式的乘积 两个数组,一个放多项式1,一个放结果 注意:arr2[j+exp]+=arr1[j]*coe; 因为有指数相加相同的情况下需要合并系数 #include<cstdio> ...
- 【微信小程序】使用vscode编写微信小程序项目
1. 在微信开发者工具(以下简称:开发者)中新建一个模板微信小程序 2. 在开发者中将模拟器分隔开 3. 设置在保存时编译 4. 在vscode中打开项目目录 5. 下载代码提示插件 这样就可以在vs ...
- vim 复制
要复制到别的地方,用 "+y 来复制,注意是三个字符.gg"+yG 1.复制 1)单行复制 在命令模式下,将光标移动到将要复制的行处,按“yy”进行复制: 2)多行复制 在命令模式 ...
- KNN算法之KD树
KD树算法是先对数据集进行建模,然后搜索最近邻,最后一步是预测. KD树中的K指的是样本特征的维数. 一.KD树的建立 m个样本n维特征,计算n个特征的方差,取方差最大的第k维特征作为根节点.选择第k ...
- Redis分布式锁服务
阅读目录: 概述 分布式锁 多实例分布式锁 总结 概述 在多线程环境下,通常会使用锁来保证有且只有一个线程来操作共享资源.比如: object obj = new object(); lock (ob ...
- 51nod1584加权约数和
题目大意: 求: \[ \sum_{i-1}^n\sum_{j=1}^nmax(i,j)\sigma(i*j) \] 题解 对于这个\(\max\),套路的把它转化成: \[ 2*\sum_{i=1} ...
- [BZOJ4817][SDOI2017]树点涂色:Link-Cut Tree+线段树
分析 与[BZOJ3779]重组病毒唯一的区别是多了一个链上求实链段数的操作. 因为每条实链的颜色必然不相同且一条实链上不会有两个深度相同的点(好像算法的正确性和第二个条件没什么关系,算了算了),画图 ...
- Bazinga
Bazinga Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/65536 K (Java/Others)Total Sub ...