Django day003

特有模板

实现字符自动替换

html文件中
<span style="color: red;">{{ error_message }}</span>

views.py
render(request, ‘login.html‘, {‘error_message‘: error_message})

----------------------

USER_LIST = [
    {"id":1, "username": "Tom", "email": "[email protected]", "gender": "M"},
    {"id":2, "username": "Lucy", "email": "[email protected]", "gender": "F"},
    {"id":3, "username": "Seven", "email": "[email protected]", "gender": "M"},
]

# for循环(有开始,有结尾)
{% for row in user_list %}
	<tr>
		<td>{{ forloop.counter }}</td>		#从1开始计数
		<td>{{ forloop.counter0 }}</td>		#从0开始计数
		<td>{{ forloop.revcounter }}</td>	#倒序至1
		<td>{{ forloop.revcounter0 }}</td>	#倒序至0
		<td>{{ forloop.first }}</td>		#是否是第一个
		# 获取字典的值
		<td>{{ row.username }}</td>
		<td>{{ row.gender }}</td>
		<td>{{ row.email }}</td>
	</tr>
{% endfor %}

-----------------------
views.py
def func(request):
	return render(request, ‘index.html‘,
		{"current_user": "Look",
		"user_list": [‘one‘, ‘two‘],
		"user_dict": {"k1": ‘v1‘, "k2": ‘v2‘},
		"age":10})

html文件
<html>
	<body>
		# 变量
		<div>{{ current_user}}</div>

		# 列表
		<a>{{ user_list.0 }}</a>
		<a>{{ user_list.1 }}</a>

		# 字典获取单个值
		<a>{{ user_dict.k1 }}</a>
		<a>{{ user_dict.k2 }}</a>
		# 字典获取key
	    <ul>
	        {% for k in user_dict.keys %}
	            <li>{{ k }}</li>
	        {% endfor %}
	    </ul>
		# 字典获取value
	    <ul>
	        {% for v in user_dict.values %}
	            <li>{{ v }}</li>
	        {% endfor %}
	    </ul>
		# 字典获取key、value
	    <ul>
	        {% for k, v in user_dict.items %}
	            <li>{{ k }}:{{ v }}</li>
	        {% endfor %}
	    </ul>

		# QuerySet,元素为对象的场景
		<h3>部门信息(对象)</h3>
	    {% for row in v1 %}
	        <li>{{ row.id }} {{ row.name }} {{ row.name_en }}</li>
	    {% endfor %}

		# 条件语句,可嵌套
		{% if age %}
			<a>有年龄</a>
				{% if age > 16 %}
					<a>老男人</a>
				{% else %}
					<a>小鲜肉</a>
				{% endif %}
		{% else %}
			<a>无年龄</a>
		{% endif %}

		# for循环与条件语句混合使用
		{% for row in user_list %}
			{% if row == "spring" %}
				<a>{{ row }}</a>
			{% endif %}
		{% endfor %}

	</body>
</html>

请求生命周期

用户发送请求-》 路由系统匹配(工程urls.py)-》 视图函数(app.views.py)-》
	DB + 模板(templates)+ 静态文件(static)-》 用户

用户-》 URL对应关系(匹配) -》 视图函数 -》 返回用户字符串
用户-》 URL对应关系(匹配) -》 视图函数 -》 打开一个HTML文件,读取内容
  • 返回用户的本质:字符串

工程创建流程

  1. 创建工程

    • django-admin startproject 工程名
  2. 创建app
    1. cd 工程名
    2. python manage.py startapp app名
  3. 静态文件配置
    1. project.settings.py
    2. STATICFILES_DIRS = ( os.path.join(BASE_DIR, ‘static‘),)
  4. 模板路径配置

    TEMPLATES -》 ‘DIRS‘: [os.path.join(BASE_DIR, ‘templates‘)]

  5. settings.py中
    • middleware中注释掉csrf
  6. 定义路由规则
    • urls.py login --》 函数名
  7. 定义视图函数
    • app的views.py
     def func(request):
     	# request.method GET/POST
     	# http:/127.0.0.1:8000/home?nid=123&name=spring
     	# 获取请求发来的数据
     	request.GET.get("nid", None)
     	request.POST.get("", None)
    
     	return HttpResponse("字符串")
     	return render(request, "HTML模板的路径")
     	return redirect("/只能填URL的路径")
    
  8. 模板渲染
    • 特殊的模板语言
    • 渲染时间:返回给用户数据之前
    • 效果:用户拿到的数据,都是渲染后的

数据管理

课堂练习
	Mysql
	SQLAlchemy
	主机管理(8列):
		- IP
		- 端口
		- 业务线
		- ....

	用户表:
		用户名
		密码

	功能:
		1. 登陆
		2. 主机管理页面
			1. 查看所有的主机信息(4列)
			2. 增加主机信息(8列) 模态对话框
			3. 查看详细信息
				def detail(request):
					nid = request.GET.get("nid")
					v = select * from tb where id=nid
			4. 删除
				def delete_host(request):
					nid = request.POST.get("nid")
					delete from tb where id=nid
					return redirect(‘/home‘)

参阅html的注释部分


主机管理

作业
	通过前端页面实现操作后台数据库:实现增删改查
	实现主机分组
	实现不同的用户可以管理不同的主机
	在前端可以对主机信息实现增删改查

原文地址:https://www.cnblogs.com/todayisafineday/p/8111699.html

时间: 2024-08-10 20:27:09

Django day003的相关文章

Django url 标签和reverse()函数的使用(转)

原文:http://www.yihaomen.com/article/python/355.htm 使用url标签和reverse()函数,可以避免在模板和view中对url进行硬编码,这样即使url改变了,对模板和view也没有影响 起初用django 开发应用的时候,完全是在urls.py 中硬编码配置地址,在views.py中HttpResponseRedirect()也是硬编码转向地址,当然在template 中也是一样了,这样带来一个问题,如果在urls.py 中修改了某个页面的地址,

利用 Django REST framework 编写 RESTful API

利用 Django REST framework 编写 RESTful API Updateat 2015/12/3: 增加 filter 最近在玩 Django,不得不说 rest_framework 真乃一大神器,可以轻易的甚至自动化的搞定很多事情,比如: 自动生成符合 RESTful 规范的 API 支持 OPTION.HEAD.POST.GET.PATCH.PUT.DELETE 根据 Content-Type 来动态的返回数据类型(如 text.json) 生成 browserable

Django(三) ORM 数据库操作

比较有用 转自 http://blog.csdn.net/fgf00/article/details/53678205 一.DjangoORM 创建基本类型及生成数据库表结构 1.简介 2.创建数据库 表结构 二.Django ORM基本增删改查 1.表数据增删改查 2.表结构修改 三.Django ORM 字段类型 1.字段类型介绍 2.字段参数介绍 3.Django ORM 外键操作 一.DjangoORM 创建基本类型及生成数据库表结构 1.简介 ORM:关系对象映射.定义一个类自动生成数

linux中部署django项目

通过Nginx部署Django(基于ubuntu) Django的部署可以有很多方式,采用nginx+uwsgi的方式是其中比较常见的一种方式. 在这种方式中,我们的通常做法是,将nginx作为服务器最前端,它将接收WEB的所有请求,统一管理请求.nginx把所有静态请求自己来处理(这是NGINX的强项).然后,NGINX将所有非静态请求通过uwsgi传递给Django,由Django来进行处理,从而完成一次WEB请求. 可见,uwsgi的作用就类似一个桥接器.起到桥梁的作用. Linux的强项

【前端框架】Django补充

一.缓存 由于Django是动态网站,所以每次请求均会去取到数据进行相应的操作,当程序访问量大时,耗时必然会更加明显,最简单的解决方式就是使用缓存,缓存将某个views返回的值保存至内存或者memcache中,5分钟内再有人来访问时,则不再去执行view中的操作,而是直接从内存或者redis中把之前缓存的内容拿到,并返回. Django中提供了6中缓存方式: 开发调试 内存 文件 数据库 Memcache缓存(python-memcached模块) Memcache缓存(pylibmc模块) 1

Django之Form组件

Django的Form主要具有一下几大功能: 生成HTML标签 验证用户数据(显示错误信息) HTML Form提交保留上次提交数据 初始化页面显示内容 小试牛刀 1.创建Form类 from django.forms import Form from django.forms import widgets from django.forms import fields class MyForm(Form): user = fields.CharField( widget=widgets.Tex

Django表单上传

任务描述:实现表单提交(上传文件) 1.项目目录: 2.源代码: regist.html <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>regist</title> </head> <body> <h3>regist</h3> <hr> <

Django之ModelForm组件

1.Django之ModelForm组件 ModelForm a. class Meta: model, # 对应Model的 fields=None, # 字段 exclude=None, # 排除字段 labels=None, # 提示信息 help_texts=None, # 帮助提示信息 widgets=None, # 自定义插件 error_messages=None, # 自定义错误信息(整体错误信息from django.core.exceptions import NON_FIE

win7 32位配置apache+wsgi+django环境

1下载xampp,里面有apache,mysql,phpmyadmin, 2 下载wsgi,http://download.csdn.net/download/copter/9192361 将对应的模块解压放到D:\programs\xampp\apache\modules 然后到D:\programs\xampp\apache\conf\httpd.conf中 # 添加mod_wsgi.so 模块LoadModule wsgi_module modules/mod_wsgi.so # Virt